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

如何返回User表中无UserDetails匹配或匹配且位置为IND的所有行

解决方案:获取符合条件的User记录

要实现你的需求,我们可以使用LEFT JOIN关联User和UserDetails表,同时通过条件过滤出符合要求的记录。这里有两种直观的写法,都能达成预期效果:

方法一:在JOIN的ON子句中添加过滤条件

这种方式会先对UserDetails表做条件过滤,再和User表做左连接,既能保留没有匹配UserDetails的User记录,也只会留下符合条件的匹配记录。

SELECT 
    u.id, 
    u.name, 
    ud.location
FROM User u
LEFT JOIN UserDetails ud 
    ON u.id = ud.user_id 
    AND ud.location = 'IND';

方法二:在WHERE子句中明确两种判断情况

如果你更习惯把条件集中在WHERE里,也可以这样写,清晰区分两种符合要求的场景:

SELECT 
    u.id, 
    u.name, 
    ud.location
FROM User u
LEFT JOIN UserDetails ud 
    ON u.id = ud.user_id
WHERE 
    ud.id IS NULL  -- 该用户没有对应的UserDetails记录
    OR ud.location = 'IND';  -- 有对应记录且满足指定位置条件

结果验证

用你提供的示例数据测试这两个查询,都会得到预期的结果:

idnamelocation
1Hearamannull
2Ramsenull
4RobertIND

小提示

千万别直接在WHERE里只写ud.location = 'IND'——这样会把LEFT JOIN中没有匹配的记录(ud字段全为NULL)直接过滤掉,就拿不到id为1和2的用户了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:47:17