我很难解决这个问题。
在处理了一些查询后,我得到了这样的结果:
SELECT col1, col2 FROM Whatever;
col1 col2
1 100
2 200
3 200
2 100
我想从中抽出2
,因为2
是col1
的唯一值,因此它对应于col2
的每个现有值({ {1}}和100
)。如果还有另一行,例如200
,那么我希望得到一个空结果,因为没有行可以满足此条件。
我本以为4 400
可以帮助我,但是后来我意识到这没用。我什至希望得到关于阅读内容的丝毫提示。
谢谢。
UPD:经过一番挖掘,我得出的结论是我需要进行关系划分,即
ALL
答案 0 :(得分:1)
一种方法使用窗口函数:
select col1, col2
from (select col1, col2,
count(distinct col2) over () as num_col2,
count(distinct col2) over (partition by col1) as num_col2_per_col1
from whatever
) t
where num_col2 = num_col2_per_col1;
并非所有数据库都支持count(distinct)
作为窗口函数。如果有必要,有一些简单的解决方法,但是count(distinct)
作为窗口函数是标准SQL。
如果只希望“ 2”而不是所有行,请使用select distinct col1
。