mysql - 仅在为空时选择

标签 mysql sql join left-join

我有一张用户表和一张他们在列表中拥有的东西的表 -

为了显示列表中有项目的所有用户,我可以在 user_id 上加入 usersuser_lists 这两个表

例如

select u.emailaddr, u.name from users u
join user_lists uw where u.user_id=uw.user_id
group by u.name

问题:如何显示所有没有列表中的项目的用户 - 换句话说,我需要一个没有列表的用户列表表 user_lists 中的条目

我试过了,但它一直在运行

select u.emailaddr, u.name from users u
join user_lists uw where u.user_id<>uw.user_id
group by u.name

最佳答案

使用 LEFT JOINIS NULL 谓词:

select u.emailaddr, u.name 
from users u
LEFT join user_lists uw ON u.user_id = uw.user_id
WHERE uw.user_id IS NULL;

或者: NOT IN 谓词:

select u.emailaddr, u.name 
from users u
WHERE u.user_id NOT IN (SELECT user_id
                        FROM user_lists);

关于mysql - 仅在为空时选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15585921/

相关文章:

mysql - 在 mysql 上处理 2000 多个请求?

c# - 端口更改时无法连接到 mysql 服务器 C#

mysql - SELECT … WHERE 没有 FROM 抛出语法错误

sql - Postgres : why LEFT JOIN affects to query plan?

c# - 如何使用 Nhibernate 连接两个所有 id 均为 UNIQUEIDENTIFIER 的表来选择仅具有一个不同列的多个列

php - 使用 PhpActiveRecord 检查 NULL 值

SQL Server 触发器将 "false"替换为 null

php - 如何使用连接表将记录添加到数据库 - codeigniter

python - Pandas:如何将 MultiIndex DataFrame 与单个索引 DataFrame 连接起来,以及自定义排序

php - 使用两个不同的键连接表 mysql