为什么这个sql查询只显示结果,如果他们在users_warnings中只有一行?
SELECT
u.id,
uw.warning
FROM
users u
INNER JOIN users_warnings uw ON (
u.id = uw.uID
)
LIMIT 21
我希望向所有用户展示,但也会抓取users_warnings中的“警告”列,如果有的话。
答案 0 :(得分:6)
因为您正在使用inner join
,这需要在连接表上存在一行。请尝试以下方法:
SELECT
u.id,
uw.warning
FROM
users u
LEFT JOIN users_warnings uw ON (
u.id = uw.uID
)
LIMIT 21
答案 1 :(得分:6)
如果两个表中都有数据,则INNER JOIN
仅返回一些内容
请改为LEFT JOIN
:
SELECT u.id, uw.warning FROM users u
LEFT JOIN users_warnings uw ON (u.id = uw.uID)
LIMIT 21
答案 2 :(得分:2)
更改左连接的内部联接,如下所示:
SELECT u.id, uw.warning FROM users u
LEFT JOIN users_warnings uw ON (u.id = uw.uID)
LIMIT 21
答案 3 :(得分:1)
SELECT
u.id,
IFNULL(uw.warning,'') warning
FROM
(SELECT id FROM users LIMIT 21) u
LEFT JOIN users_warnings uw
ON u.id = uw.uID
;