希望你能帮助我正确的 SQL 查询语法(使用 MySQL 5.5.25)。
我有 3 个表:
- 数据
- 数据_tmp
- 用户
data
表是空的 - 有自己的结构但没有行
数据:
id | name | who
----------------
data_tmp:
id | cars | who
---------------
1 | lambo| 2
用户
who | name |
------------
2 | john
我的查询是:
SELECT DISTINCT
users.name,
(SELECT count(id) FROM data WHERE who = 1) as number,
data_tmp.cars
FROM
users, data, data_tmp
WHERE
users.who = 2
AND data_tmp.who = 2
AND data.who = 2
这当然会返回一个空结果(没有适合所有参数的行,因为 data
是空的)。
我想实现的是:
users.name | number | data_tmp.cars |
-------------------------------------
john | 0 | lambo |
我确定我必须以某种方式使用 LEFT JOIN
但找不到正确的语法。希望你能帮助我。
卡雷格
最佳答案
试一试(不使用子查询)
SELECT a.name, b.cars, count(c.id) as number
FROM users a
INNER JOIN data_tmp b
on a.who = b.who
LEFT JOIN data c
on a.who = c.who AND
a.name = c.name
WHERE a.who = 2
GROUP BY a.name, b.cars
这适用于不同的服务器:
关于MySQL - 选择 3 个具有正确左连接语法的表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11708464/