You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL查询:获取指定gid用户及无对应用户的渠道数据

MySQL LEFT JOIN 查询结果丢失无匹配行的解决方法

问题分析

你的原查询中,WHERE (u.gid IN (NULL,'1', '2'))无法保留channels表中无对应users的行——当channels的uid为NULL时,LEFT JOIN后u的所有字段均为NULL,而SQL中NULL与任何值进行IN比较的结果为UNKNOWN,会被WHERE子句过滤,导致这条数据丢失。同时,channels表中uid=4的行对应users的gid=3,不符合需求,需要排除。

修改后的查询语句

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

逻辑说明

  1. LEFT JOIN users u ON u.uid = c.uid:保留channels表的所有行,匹配users表中uid相同的记录,无匹配则u的字段为NULL。
  2. WHERE (u.gid IN ('1', '2')):筛选出users表中gid为1、2的用户对应的渠道数据。
  3. OR (u.uid IS NULL):保留channels表中无对应users的行(此时u.uid为NULL)。

执行该查询后,即可得到目标结果:

uidgidtime
1123423
2252422
3223423
NULLNULL345

内容的提问来源于stack exchange,提问作者Olexander

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 07:17:12