【问题标题】:SQL query two tables with a condition in the child table and record not exist in childSQL查询子表中有条件的两个表,子表中不存在记录
【发布时间】:2023-01-01 20:36:23
【问题描述】:

我有两个表(mysql): 渠道:

uid time
1 23423
2 52422
3 23423
4 42342
NULL 345

用户:

uid id gid
1 sam1 1
2 sam2 2
3 sam2 2
4 sam2 3

我想为 gid=1 和 gid=2 的用户以及不存在的用户选择所有频道

我运行查询:

SELECT u.id, u.gid, c.time
FROM channels c 
LEFT JOIN users u ON (u.uid=c.uid) 
WHERE (u.gid IN (NULL,'1', '2'))

并且有

uid gid time
1 1 23423
2 2 52422
3 2 23423

如何为不存在的用户选择频道? 我想得到以下结果:

uid gid time
1 1 23423
2 2 52422
3 2 23423
NULL NULL 345

【问题讨论】:

    标签: mysql sql select


    【解决方案1】:

    使用 IS NULL 检查空值:

    SELECT u.id, u.gid, c.time
    FROM channels c 
    LEFT JOIN users u ON u.uid = c.uid
    WHERE u.gid IN (1, 2) OR c.uid IS NULL;
    

    【讨论】:

    • 列 gid - 不存在于表通道中。但是: SELECT u.id, u.gid, c.time FROM channels c INNER JOIN users u ON u.uid = c.uid WHERE u.gid IN (1, 2) OR u.gid IS NULL;在职的 !非常感谢你
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-05
    • 2011-03-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多