我有一個場景,我需要查詢表以查看特定記錄集中不存在的記錄數。
例如 - 我有一個記錄集(deptno1,deptno2 ....deptno100)
表 - Emp1
我想知道表 emp1 中不存在該記錄集中的多少記錄。
如果我運行此查詢 - select * from emp1 where deptno notin(deptno1....deptno100) 它提供除 100 條記錄以外的記錄,即使這 100 條記錄可能在該表中
uj5u.com熱心網友回復:
您可以使用:
WITH data (deptno) AS (
SELECT 'deptno1' FROM DUAL UNION ALL
SELECT 'deptno2' FROM DUAL UNION ALL
-- ...
SELECT 'deptno100' FROM DUAL
)
SELECT d.deptno
FROM data d
LEFT OUTER JOIN emp1 e
ON (d.deptno = e.deptno)
WHERE e.deptno IS NULL;
或者,稍微不同的語法應該適用于早期的 Oracle 版本,或者:
WITH data AS (
SELECT 'deptno1' AS deptno FROM DUAL UNION ALL
SELECT 'deptno2' FROM DUAL UNION ALL
-- ...
SELECT 'deptno100' FROM DUAL
)
SELECT d.deptno
FROM data d
LEFT OUTER JOIN emp1 e
ON (d.deptno = e.deptno)
WHERE e.deptno IS NULL;
或者
SELECT d.deptno
FROM (
SELECT 'deptno1' AS deptno FROM DUAL UNION ALL
SELECT 'deptno2' FROM DUAL UNION ALL
-- ...
SELECT 'deptno100' FROM DUAL
) d
LEFT OUTER JOIN emp1 e
ON (d.deptno = e.deptno)
WHERE e.deptno IS NULL;
資料庫<>小提琴
uj5u.com熱心網友回復:
您可以使用 connect by 生成值。
with d(dept) AS ( select 'deptno' || to_char(level) from dual connect by level <= 100 ) select d.dept from d left join emp1 e on (d.dept = e.deptno) where e.deptno一片空白;
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/369931.html
