我有一个包含20行的表cars(id, name)。另一个表carLog(username, car, count)包含对玩家购买的汽车进行计数的行(如果没有购买,则没有行)

我希望我的查询返回所有二十辆汽车,以及额外的加入信息(如果它们在carLog表中有一行,但我无法使它工作)。

SELECT * FROM cars LEFT JOIN carLog ON cars.id=carLog.car


这将返回数百行,我希望它返回20行(每辆车一个),如果用户名购买了该车,则返回该行中的其他信息:

WHERE carLog.username='Juddling'


我不知道我是否打算使用GROUP BY,WHERE或其他类型的联接!

最佳答案

将用户名条件从WHERE子句移到ON子句。

SELECT *
FROM cars
LEFT JOIN carLog
  ON cars.id=carLog.car
     AND carLog.username='Juddling'


JOIN已经完成时,将应用WHERE子句。这意味着,它将丢弃LEFT JOIN添加的NULL行。

09-17 00:23