从数字列表中我想得到表中没有的那些ID

时间:2015-09-30 16:27:58

标签: sql oracle11g

我有一个ID列表,我想检查它们是否在employee表中。 我想只显示表格中没有的那些。

SELECT * FROM EMPLOYEE;
EMPLOYEEID|FIRSTNAME|LASTNAME
1         | JOHN    | DOE
2         | JANE    | DOE

当我运行下面的sql语句时,我希望得到员工表中不存在的ID。

SELECT '1', '2, '3', '4' AS "X1"FROM 
EMPLOYEE WHERE X1 NOT IN (SELECT EMPLOYEEID FROM EMPLOYEE);

1 个答案:

答案 0 :(得分:1)

您需要将这些数字转换为子查询,然后选择表中不存在的数字:

with t as
(
select 1 X1 from dual
union
select 2 X1 from dual
union
select 3 X1 from dual
)
SELECT X1 FROM t
WHERE X1 NOT IN (SELECT EMPLOYEEID FROM EMPLOYEE)

如果你有一个很大的ID列表并且你将执行一些更复杂的查询,那么可能值得研究创建temporary table来存储它们,然后使用临时表而不是我建议的子查询。 / p>