簡體   English   中英

當JOIN條件不滿足時,mysql選擇虛擬記錄

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM