我有一个包含 20 行的表 cars(id, name)
。另一个表 carLog(username, car, count)
包含记录玩家已购买的汽车的行(如果他们没有购买汽车则没有行)
我希望我的查询返回所有 20 辆车和额外的连接信息,如果它们在 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 行。
关于MySQL 左连接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12438392/