Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.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_Oracle - Fatal编程技术网

用于排除的SQL

用于排除的SQL,sql,oracle,Sql,Oracle,我有一个表,它是一个简单的ID号和名称列表——我试图编写一个SQL,它只返回名称没有特定ID的行 这一直困扰着我——下面的查询返回所有的ID,因为它们有来自排除列表的其他ID,这些ID的范围很大。如何构造一个只返回那些不具有ID 2或ID 3的人的查询,即只返回下表中的“bob” 从ID不在2、3中的表中选择* ID NAMES 1 bob 1 alice 2 alice 1 dave 2 dave 3 dave 4 dave 谢谢。一种方法是分组,并拥有: 如果

我有一个表,它是一个简单的ID号和名称列表——我试图编写一个SQL,它只返回名称没有特定ID的行

这一直困扰着我——下面的查询返回所有的ID,因为它们有来自排除列表的其他ID,这些ID的范围很大。如何构造一个只返回那些不具有ID 2或ID 3的人的查询,即只返回下表中的“bob”

从ID不在2、3中的表中选择*

ID  NAMES
1   bob
1   alice
2   alice
1   dave
2   dave
3   dave
4   dave
谢谢。

一种方法是分组,并拥有:

如果需要原始id,可以将组order by id中的listaggid,,'添加到select。或使用不存在:


用语言清楚地表达你想要什么,或者如何编写代码?您想要的行中的某些集合/列/组中不存在某个集合/列/组等中的值,以及如何在查询中准确地表示输入不允许的集合?一旦你清楚这将是一个常见问题。PS注意,代码问题需要一个明确的规范:请在代码问题中给出一个-cut&paste&runnable代码;示例输入,具有预期和实际输出,包括逐字错误消息;清晰的说明和解释。
select name
from t
group by name
having sum(case when ID in (2, 3) then 1 else 0 end) = 0;
select t.*
from t
where not exists (select 1
                  from t t2
                  where t2.name = t.name and
                        t2.id in (2, 3)
                 );