【问题标题】:join two table return blank if not found MYSQL如果找不到MYSQL,则连接两个表返回空白
【发布时间】:2020-04-02 08:35:46
【问题描述】:

我在 MySQL 查询中遇到问题。我在查询中使用左连接来连接两个表,但未能得到预期结果。

假设我的用户表是

用户表

Id  Name
1   User 1
2   User 2
3   User 3
4   User 4
5   User 5
6   User 6
7   User 7

考勤表

Id  user_id date
1   1   2020-03-30
2   2   2020-03-30
3   3   2020-03-30
4   4   2020-03-30
5   7   2020-03-30
6   1   2020-03-31
7   3   2020-03-31
8   5   2020-03-31
9   6   2020-03-31
10  1   2020-04-01
11  2   2020-04-01
12  3   2020-04-01

我的预期结果

1   User 1  2020-04-01
2   User 2  2020-04-01
3   User 3  2020-04-01
4   User 4  NULL
5   User 5  NULL
6   User 6  NULL
7   User 7  NULL

这是我的查询

SELECT og_users.id, og_users.display_name, pacra_attendance.date, pacra_attendance.log_in_time
FROM og_users

LEFT JOIN pacra_attendance
ON og_users.id = pacra_attendance.user_id

WHERE og_users.is_active = 1 AND pacra_attendance.date = '2020-04-01'

请帮帮我。

谢谢

【问题讨论】:

    标签: mysql sql join left-join


    【解决方案1】:

    你可以用这个:

    SELECT og_users.id, og_users.display_name, pacra_attendance.date, pacra_attendance.log_in_time
    FROM og_users LEFT JOIN pacra_attendance
      ON og_users.id = pacra_attendance.user_id AND pacra_attendance.date = '2020-04-01'
    WHERE og_users.is_active = 1 
    

    demo on dbfiddle.uk

    您可以将日期条件从WHERE 移动到LEFT JOIN。在WHERE 上使用日期条件就像使用INNER JOIN

    【讨论】:

    • 请问,如果我使用 Between 条件作为日期,它也可以工作吗?
    • @sunny 是的,这也有效 (see demo)
    猜你喜欢
    • 2017-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-22
    • 1970-01-01
    • 2020-10-30
    相关资源
    最近更新 更多