我有两个表,一个是点击记录,另一个是用户表。如果以用户身份登录,则使用该用户的ID记录命中。如果用户未登录,则将命中记录为user_id = 0
当我运行一个报告时,我想加入对user s表的hits以获得用户名——但是没有id为0的用户,所以我得到了错误的数据(例如,所有未登录的hits都没有结果)。有没有一种方法可以在不满足联接条件的情况下选择像“guest”这样的虚拟用户名?
以下是问题:

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

最佳答案

尝试左连接并合并为默认值

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

关于mysql - 当JOIN条件不满足时,mysql选择虚拟记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6362132/

10-16 01:36