[英]Why doesn't my query return any results?
Why does this sql query only show results if they only have a row in 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
I wish to show all users, but also grab the column "warning" in users_warnings, if any. 我希望向所有用户显示,但也会在users_warnings中抓取“警告”列,如果有的话。
Because you're using an inner join
, which requires a row to exist on the joined table. 因为您正在使用
inner join
联接,这需要在联接表上存在行。 Try the following: 请尝试以下方法:
SELECT
u.id,
uw.warning
FROM
users u
LEFT JOIN users_warnings uw ON (
u.id = uw.uID
)
LIMIT 21
An INNER JOIN
only returns something if there is data in both tables. 如果两个表中都有数据,则
INNER JOIN
仅返回一些内容。
Try a LEFT JOIN
instead: 尝试
LEFT JOIN
:
SELECT u.id, uw.warning FROM users u
LEFT JOIN users_warnings uw ON (u.id = uw.uID)
LIMIT 21
Change your inner join for a left join, as so: 更改左连接的内部联接,如下所示:
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
;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.