背景
MySQL数据库中,想要查询一组给定的值,哪些时IN在表里不存在的值(也就是从in列表中获取表中不存在的记录),示例如下。
假如有一个表person,表结构如下:
ID | NAME |
---|---|
1 | 张三 |
2 | 李四 |
3 | 王五 |
另有一批数据如:‘张三’,‘李四’,‘赵六’,要找出这批数据中有哪些是在表person中不存在的。
解决方案
将数据转换成临时表数据,然后和person里的值进行比较,如下:
SELECT AA
FROM (
SELECT '张三' AA FROM DUAL
UNION ALL
SELECT '李四' AA FROM DUAL
UNION ALL
SELECT '赵六' AA FROM DUAL)
WHERE AA NOT IN (
SELECT NAME FROM PERSON
)
或者
SELECT AA
FROM (
SELECT '张三' as AA
UNION ALL
SELECT '李四'
UNION ALL
SELECT '赵六')
WHERE AA NOT IN (
SELECT NAME FROM PERSON
)