检索只有“是”值的列,而不是同时具有“是”和“否”值的列

时间:2021-05-29 17:07:03

标签: sql oracle

下面是我的桌子

<头>
col1 col2
02/03/50 y
02/03/50 n
05/06/80 n
07/08/91 y

我只想用 col2 = 'y' 检索两列,即 07/08/91。

它不应该检索 02/03/50,因为它同时具有 Y 和 N。

2 个答案:

答案 0 :(得分:2)

假设 col2 不可为空,使用 NOT EXISTS

SELECT t1.*
FROM tablename t1
WHERE NOT EXISTS (
  SELECT 1 
  FROM tablename t2
  WHERE t2.col1 = t1.col1 AND t2.col2 = 'N'
)

答案 1 :(得分:1)

如果您只需要第一列,请使用聚合。如果第二列只采用 'Y''N',您可以使用:

select col1
from t
group by col1
having min(col2) = 'Y';

这使用了 'Y' > 'N' 的事实。如果该列有更多值,您可以改用:

select col1
from t
group by col1
having min(case when col2 = 'Y' then 0 else 1 end) = 0;
相关问题