如何显示在子句中不匹配的所有值?

问题描述:

对于防爆:如何显示在子句中不匹配的所有值?

MY_TABLE 
COL1->'P1','P2','P3' 

输出应该显示P4,P5

我想:

select col1 from my_table where col1 not in ('p4','p5'); 
+0

从my_table中选择col1,其中col1不在('p1','p2','p3');表应该有p4和p5的值。 –

+0

实际上我有一个从p1到p5的范围值。我想显示那些不在列中的值。 – Dualcoder

+0

如果它的数值可以在两者之间使用。 –

理想情况下,你应该有一个取值范围在适当的SQL表。缺乏这一点,你可以使用动态CTE来保存范围:

WITH cte AS (
    SELECT 'p1' AS col1 FROM dual UNION ALL 
    SELECT 'p2' FROM dual UNION ALL 
    SELECT 'p3' FROM dual UNION ALL 
    SELECT 'p4' FROM dual UNION ALL 
    SELECT 'p5' FROM dual 
) 
SELECT t1.col1 
FROM cte t1 
LEFT JOIN my_table t2 
    ON t1.col1 = t2.col1 
WHERE t2.col1 IS NULL 
+0

非常感谢您。 – Dualcoder