使用where子句过滤空字段的SQL左连接
P粉511985082
P粉511985082 2023-08-13 19:06:52
[MySQL讨论组]

我有两个表,一个是用户表(Users table),一个是令牌表(Token table)。我想要将这两个表连接起来,查看哪些用户已验证了他们的令牌,哪些没有。令牌表中有一个包含用户ID的外键。

现在我正在使用左连接(left join)来连接用户ID,并尝试检查是否没有验证。查询语句如下:

SELECT name, verified
FROM users LEFT JOIN tokens 
ON users.ID = tokens.UID
WHERE verified = false

假设我有以下两个表:

ID | Name 
0  | Joe
1  | Sally
2  | Dave
3  | John

然后,令牌表如下:

ID | UID | Verifed
0  | 1   | 0
1  | 2   | 0
2  | 3   | 1

如你所见,Joe在第二个表中没有记录。我希望将这两个表连接起来,即使Joe在第二个表中没有记录,也希望将其视为false/null。当我运行查询以查找未验证的用户时,只会返回2个条目的数据。

Name  | Verified
Sally | 0
Dave  | 0

如果我去掉where子句,结果会是以下这样:

Name  | Verified
Sally | 0 
Dave  | 0
John  | 1
Joe   | NULL

如你所见,Joe在底部具有一个null值,但我希望将其视为未验证。我应该如何编写查询语句以获得以下数据:

Name  | Verified
Sally | 0 
Dave  | 0
Joe   | NULL

或者只需以下查询语句,结果为3。当前的查询结果为2。

SELECT count(*)
FROM users LEFT JOIN tokens 
ON users.ID = tokens.UID
WHERE verified = false


P粉511985082
P粉511985082

全部回复(1)
P粉322106755
WHERE verified = false 或 verified is null
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新 English
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号