如何解决当JOIN条件不满足时,mysql选择伪记录
| 我有两个表,一个记录命中记录,另一个是用户表。如果以用户身份登录,则匹配记录将与该用户的ID一起记录。如果用户未登录,则匹配记录为“ 0” 运行报告时,我想对用户表进行匹配以获取用户名-但是没有ID为0的用户,因此我返回了不良数据(例如,对于所有非登录的匹配数)。有没有办法选择一个不符合JOIN条件的虚拟用户名,例如\“ 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
解决方法
尝试左联接并将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
, 您需要做一个左外连接;这将返回在hits表中具有user_id条目的记录,而users表中不存在该用户。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。