ORACLE /选择在Column_B上仅具有值X的记录

时间:2018-07-12 15:59:33

标签: sql oracle

我有以下情况:

表1

ID  Column_B
10001   X
10001   Y
10002   X
10003   X
10003   Y
10004   X
10005   X
10005   Y

我需要执行一个查询,以显示在Column_B上仅具有X的ID,因此结果将是:

10002   X
10004   X

如果我运行以下选择,它还会显示在Column_B上具有Y的记录:

select ID, Column_B from Table1 where Column_B = 'X'

ID  Column B
10001   X
10002   X
10003   X
10004   X
10005   X

我在任何地方都找不到与此案例相似的东西。在这里想弄清楚我的想法。似乎很简单。该死的。

2 个答案:

答案 0 :(得分:2)

您可以使用聚合:

select id
from t
group by id
having min(column_b) = max(column_b) and min(column_b) = 'X';

答案 1 :(得分:1)

使用关系代数-在这种情况下,MINUS

SELECT ID
  FROM TABLE1
  WHERE COLUMN_B = 'X'
MINUS
  SELECT ID
    FROM TABLE1
    WHERE COLUMN_B = 'Y';

首先从与“ X”相关的所有ID的列表开始,然后减去与“ Y”相关的ID的列表。

SQLFiddle here

好运。