Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/87.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 查询以标识没有特定值的记录_Sql_Db2 - Fatal编程技术网

Sql 查询以标识没有特定值的记录

Sql 查询以标识没有特定值的记录,sql,db2,Sql,Db2,我有一个类似以下内容的数据表: ID Num | Code ------------- 1 | A 1 | B 1 | C 1 | D 2 | A 2 | B 3 | A 3 | B 3 | D 4 | B 5 | A 5 | B 5 | E SELECT DISTINCT f1.ID_Num FROM yourt

我有一个类似以下内容的数据表:

ID Num | Code
-------------
   1   |   A
   1   |   B
   1   |   C
   1   |   D
   2   |   A
   2   |   B
   3   |   A
   3   |   B
   3   |   D
   4   |   B
   5   |   A
   5   |   B
   5   |   E
SELECT DISTINCT f1.ID_Num
FROM yourtable f1
LEFT OUTER JOIN LATERAL 
(
    SELECT f2.ID_Num FROM yourtable f2
    WHERE f2.code in ('C', 'D') AND f2.ID_Num=f1.ID_Num
    FETCH FIRST ROWS ONLY
) f3 on 1=1
WHERE f3.ID_Num is null
我需要能够编写一个SQL查询来显示所有没有代码C或D的ID号。(在本例中,ID号为2、4和5。)

提前感谢您提供的任何帮助

我不会用在:

SELECT DISTINCT ID_Num
FROM t
WHERE ID_Num NOT IN
(SELECT ID_Num
 FROM t
 WHERE code = 'C'
 OR code = 'D')

我喜欢使用
group by
having
来处理这类问题:

select id_num
from t
group by id_num
having sum(case when code in ('C', 'D') then 1 else 0 end) = 0;
您可以使用“not exists”(通常比not in更有效)


您可以使用“左外侧连接横向”并按如下方式选择未建立的行:

ID Num | Code
-------------
   1   |   A
   1   |   B
   1   |   C
   1   |   D
   2   |   A
   2   |   B
   3   |   A
   3   |   B
   3   |   D
   4   |   B
   5   |   A
   5   |   B
   5   |   E
SELECT DISTINCT f1.ID_Num
FROM yourtable f1
LEFT OUTER JOIN LATERAL 
(
    SELECT f2.ID_Num FROM yourtable f2
    WHERE f2.code in ('C', 'D') AND f2.ID_Num=f1.ID_Num
    FETCH FIRST ROWS ONLY
) f3 on 1=1
WHERE f3.ID_Num is null

我很抱歉。它是DB2。