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

求SQL:获取usertable全量用户及match 869的nd_abletoplay状态

解决LEFT JOIN后无法返回全量用户的SQL问题

你的问题出在WHERE条件的位置:原SQL里把赛事过滤条件放在WHERE子句中,会过滤掉那些在namedown表中有其他赛事记录(但没参与869赛事)的用户——因为这些用户的nd.nd_matchuid既不是869,也不是NULL,不符合WHERE的判断逻辑,导致丢失了部分usertable的记录。

正确写法一:把赛事条件移到JOIN的ON子句中

将nd.nd_matchuid = 869放到LEFT JOIN的关联条件里,这样只会关联869赛事的记录,不匹配的用户对应的nd_AbleToPlay自然会返回NULL,同时保留usertable的所有行:

SELECT      
    ut.usr_uid, 
    CONCAT(ut.usr_firstname, ' ', ut.usr_lastname) AS Name,
    nd.nd_AbleToPlay 
FROM     
    usertable AS ut 
LEFT JOIN      
    namedown AS nd 
    ON ut.usr_uid = nd.nd_playeruid 
    AND nd.nd_matchuid = 869

正确写法二:用子查询预筛选赛事记录

先从namedown中只取出869赛事的数据,再和usertable做LEFT JOIN,效果和上面一致:

SELECT      
    ut.usr_uid, 
    CONCAT(ut.usr_firstname, ' ', ut.usr_lastname) AS Name,
    nd.nd_AbleToPlay 
FROM     
    usertable AS ut 
LEFT JOIN      
    (SELECT nd_playeruid, nd_AbleToPlay FROM namedown WHERE nd_matchuid = 869) AS nd
    ON ut.usr_uid = nd.nd_playeruid

这两种写法都能返回你期望的结果:参与869赛事的用户显示对应状态,未参与的显示NULL,同时保留usertable的全部用户。

内容的提问来源于stack exchange,提问作者Grant A Granta

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 08:47:38