MYSQL LEFT JOIN只返回连接表中的一行

时间:2018-03-15 01:39:12

标签: mysql left-join

我有以下SQL查询,我每个站点只返回一个单元,每个站点应该有10-20个单元:

SELECT site.*, units.*
FROM site
LEFT JOIN units
    ON site.id=units.id
WHERE site.submitted='1' AND unit.color ='Green'
ORDER BY site.time DESC
LIMIT 0,100;

1 个答案:

答案 0 :(得分:1)

我的猜测是WHERE子句过早地过滤了您希望在结果集中出现的记录。尝试将WHERE逻辑移到ON子句中:

SELECT s.*, u.*
FROM site s
LEFT JOIN units u
    ON s.id = u.id AND
       u.color = 'Green'
WHERE s.submitted = 1
ORDER BY s.time DESC
LIMIT 0, 100;

我在查询中引入了别名(例如u的{​​{1}}和units的{​​{1}}),这有助于简化阅读。