【问题标题】:Mysql left join returns more than one rowmysql左连接返回多行
【发布时间】:2015-10-22 19:18:03
【问题描述】:

我有 3 个表,有些字段的名称是相同的。这是第一个名为 semp 的表:

第二个名字semp_k

第三个是semp_y

你看,主表是第一个,其他的都是相关的。第一个表有 3 行。所以当我获取它时,它必须返回 3 行。但是当我获取第一个表时,它会将返回的行与第二个和第三个表的总和相乘。这是我的代码:

SELECT s.*, k.*, y.* FROM semp AS s LEFT JOIN semp_k AS k ON s.no = k.semp_no LEFT JOIN semp_y AS y ON s.no = y.semp_no WHERE s.durum = 1 ORDER BY s.bas_t DESC

【问题讨论】:

  • 使用按s.no分组
  • 就这么简单吗? :) 非常感谢。

标签: php mysql left-join


【解决方案1】:

使用 MySQL group by

group by s.no

或者试试这个:-

SELECT
s.*, k.*, y.*
FROM
semp AS s
LEFT JOIN semp_k AS k ON s. NO = k.semp_no
LEFT JOIN semp_y AS y ON s. NO = y.semp_no
WHERE
s.durum = 1
GROUP BY s.no
ORDER BY
s.bas_t DESC

【讨论】:

  • 如果我的回答对你有帮助,请接受我的回答 :) @Habip OĞUZ
【解决方案2】:

您需要使用分组依据。 您的查询应该是这样的;

SELECT
    s.*, k.*, y.*
FROM
    semp AS s
LEFT JOIN semp_k AS k ON s. NO = k.semp_no
LEFT JOIN semp_y AS y ON s. NO = y.semp_no
WHERE
    s.durum = 1
GROUP BY s.no
ORDER BY
    s.bas_t DESC

【讨论】:

    猜你喜欢
    • 2014-01-16
    • 1970-01-01
    • 1970-01-01
    • 2013-02-18
    • 1970-01-01
    • 2016-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多