SQL LEFT JOIN与IN比较的where子句
问题描述:
可能无意中偶然发现了一个很好的SQL测试问题。SQL LEFT JOIN与IN比较的where子句
- 我有一个表让我们说~100个用户名。
- 我有一组10个可能的用户名{aname,BNAME,CNAME,DNAME,...}
如果我做的:
SELECT user.username FROM user WHERE user.username IN ('aname', 'bname', 'cname',...);
我获得选择一个用户名列表,减去表中未找到的那些,隆重。
我真正想要的是没有在表格中找到的列表。
如果WHERE...IN
子句列表是一个表,我只是LEFT JOIN
它到用户表和筛选NULLs
。
有没有办法做到这一点,而不做一个临时表,并将其加入到用户表中?我猜,用户表的左连接与WHERE...IN
子句有关?
我从来没有做过或看过它,但也许它存在。
答
您可以派生表做到这一点,一个left join
:
SELECT l.name
FROM (SELECT 'aname' as name UNION ALL
SELECT 'bname' UNION ALL
SELECT 'cname' UNION ALL
. . .
) l LEFT JOIN
user u
ON u.username = l.name
WHERE u.username IS NULL
yey也许你需要不 – Beginner