[英]mysql select dummy record when JOIN condition not met
我有兩個表,一個是命中記錄,另一個是用戶表。 如果用戶登錄,則使用該用戶的ID記錄匹配。 如果用戶未登錄,則命中記錄為user_id = 0
當我運行一個報告時,我想加入針對users表的命中來獲取用戶名 - 但是沒有ID為0的用戶,所以我得到了錯誤的數據(例如,所有未登錄的命中都沒有結果) )。 有沒有辦法選擇像“Guest”這樣的虛擬用戶名,其中不符合JOIN條件?
這是查詢:
SELECT DATE_FORMAT(a.timestamp, '%Y-%m-%d') date, count(a.*) hits, a.user_id, b.username
FROM hits a
JOIN users b ON a.user_id = b.id
WHERE 1
嘗試左連接和COALESCE默認
SELECT DATE_FORMAT(a.timestamp, '%Y-%m-%d') date, count(a.*) hits, a.user_id,
COALESCE( b.username, 'GUEST')
FROM hits a
LEFT JOIN USERS b ON a.user_id = b.id
你需要做一個LEFT OUTER JOIN; 這將返回在用戶表中不存在用戶的hits表中具有user_id條目的記錄。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.