我有一个包含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行。