爲什麼這個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