从数字列表中,我想获得那些不存在于表中的id



我有一个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);

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

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列表,并且您将执行一些更复杂的查询,那么可能值得考虑创建一个临时表来存储它们,然后使用临时表而不是我建议的子查询。

最新更新