我有两个表,一个是命中记录,另一个是用户表。如果用户登录,则使用该用户的ID记录匹配。如果用户未登录,则匹配将记录为user_id = 0
当我运行报告时,我想在针对users表的JOIN中加入以获取用户名 - 但是没有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
答案 0 :(得分: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
答案 1 :(得分:0)
你需要做一个LEFT OUTER JOIN;这将返回在用户表中用户不存在的hits表中具有user_id条目的记录。