我有一個查詢,顯示用戶列表和他們的最後登錄日期。它適用於「如果」他們有登錄歷史,但如果他們沒有登錄歷史記錄,則不包括他們。即使他們沒有登錄歷史記錄,我如何讓所有用戶顯示?MySQL僅選擇一條記錄加入,包括不匹配
SELECT SQL_CALC_FOUND_ROWS growers.*,ld2.ip,ld2.login_date as last_login
FROM growers
LEFT JOIN (
SELECT *
FROM log_logins
WHERE user_type = "grower"
ORDER BY login_date DESC
)
as ld2 ON (ld2.user_id = growers.id)
GROUP BY user_id
ORDER BY growers.id DESC
我雖然「左」連接將包括他們,即使連接不匹配任何東西,但它沒有。另一件我不明白的事情是,當我刪除所有日誌記錄時,這個查詢總是返回1個用戶?
感謝您的幫助。
你需要一個左'OUTER'加入。 –
自己使用LEFT JOIN沒有錯......您是否返回單個NULL記錄?嘗試返回growers.id而不是ld2.id. – sgeddes
@BobFincheimer LEFT OUTER join沒有改變查詢的結果。 – Danny