MySQL 左连接?

标签 mysql sql join left-join

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

相关文章:

sql - 如何在 MySQL 中强制执行复合唯一性?

MySQL 工作台错误代码 29 : (Errcode13 -Permission denied)

mysql - SQL数据插入列错误

php - 选择加入mysql 2个数据库

mysql - SQL:子查询?拉柱使用条件

php - 如何将 json block 转换为 CSV 文件?

php - 将整个 phpmyadmin 数据库导入新系统

mysql - 如何比较记录并在mysql中的同一个表的第三列中选择它们

sql-server - 无法使用子查询在 Left join 之后创建 where 子句

MySQL语法错误,关于union和as关键字