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

LEFT JOIN带WHERE子句时如何包含无对应记录的未验证用户?

解决LEFT JOIN遗漏无Token记录用户的问题

列出所有未验证用户的SQL语句

你可以通过两种方式调整查询条件,将无Token记录的用户(verified为NULL)也视为未验证:

方法1:使用COALESCE处理NULL值

SELECT name, 
       COALESCE(verified, 0) AS verified_status
FROM users 
LEFT JOIN tokens ON users.ID = tokens.UID
WHERE COALESCE(verified, 0) = 0;

COALESCE(verified, 0)会把NULL的verified值替换为0,这样就能和已标记为0的未验证用户一起被筛选出来。

方法2:直接在WHERE中包含NULL判断

SELECT name, 
       CASE WHEN verified IS NULL THEN 0 ELSE verified END AS verified_status
FROM users 
LEFT JOIN tokens ON users.ID = tokens.UID
WHERE verified IS NULL OR verified = 0;

这里通过verified IS NULL OR verified = 0明确把两种未验证情况(无Token、有Token但未验证)都纳入筛选范围,同时用CASE语句统一输出状态值。

统计未验证用户总数

如果只需要统计数量,可以用以下语句:

SELECT COUNT(*) AS unverified_count
FROM users 
LEFT JOIN tokens ON users.ID = tokens.UID
WHERE COALESCE(verified, 0) = 0;

或者:

SELECT COUNT(*) AS unverified_count
FROM users 
LEFT JOIN tokens ON users.ID = tokens.UID
WHERE verified IS NULL OR verified = 0;

这两个语句都会返回正确的未验证用户总数3。

问题原因说明

原查询中WHERE verified = false会过滤掉verified为NULL的记录,因为SQL中NULL与任何值的比较结果都是NULL,不会被判定为true,导致Joe这类无Token的用户被遗漏。调整后的条件覆盖了NULL的情况,从而得到完整的未验证用户列表。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 12:58:54