3

我有两张表,一张是点击记录,另一张是用户表。如果以用户身份登录,则使用该用户的 ID 记录命中。如果用户未登录,则命中记录为user_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
4

2 回答 2

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
于 2011-06-15T18:03:00.100 回答
0

你需要做一个左外连接;这将返回在用户表中不存在用户的 hits 表中具有 user_id 条目的记录。

于 2011-06-15T18:03:35.937 回答