为什么这个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列“警告”。
为什么这个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列“警告”。
如果两个表中都有数据,则INNER JOIN
将返回一些内容。
尝试LEFT JOIN
代替:
SELECT u.id, uw.warning FROM users u
LEFT JOIN users_warnings uw ON (u.id = uw.uID)
LIMIT 21
因为您使用的是inner join
,这需要连接表上存在一行。请尝试以下操作:
SELECT
u.id,
uw.warning
FROM
users u
LEFT JOIN users_warnings uw ON (
u.id = uw.uID
)
LIMIT 21
改变你内心的加盟,左连接,像这样:
SELECT u.id, uw.warning FROM users u
LEFT JOIN users_warnings uw ON (u.id = uw.uID)
LIMIT 21
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
;
这更像是你想要的而不是外连接 – kralco626