【问题标题】:mysql select dummy record when JOIN condition not metmysql 在不满足 JOIN 条件时选择虚拟记录
【发布时间】:2011-09-15 18:28:01
【问题描述】:

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

【问题讨论】:

    标签: mysql join dummy-data


    【解决方案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
    

    【讨论】:

    • @julio。没问题你也可以改用IFNULL
    【解决方案2】:

    您需要进行 LEFT OUTER JOIN;这将返回在用户表中不存在用户的 hits 表中具有 user_id 条目的记录。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-07-15
      • 1970-01-01
      • 2023-03-28
      • 2019-07-30
      • 2023-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多