假设我的 Oracle DB 中有下表:
Col1: Col2: ... Coln:
1 a ... 1
1 a ... 1
1 b ... 1
1 b ... 1
1 c ... 1
1 a ... 1
2 d ... 1
2 d ... 1
2 d ... 1
3 e ... 1
3 f ... 1
3 e ... 1
3 e ... 1
4 g ... 1
4 g ... 1
而且,我想要得到的是一个不同的记录列表,其中 forCol1
是Col2
不同的 - 忽略Col2
与所有Col1
.
所以,在这个例子中,我想得到结果集:
Col1: Col2:
1 a
1 b
1 c
3 e
3 f
现在,我想出了如何使用对手头的问题感觉相当复杂的查询来做到这一点:
With MyData as
(
SELECT b.Col1, b.Col2, count(b.Col2) over(Partition By b.Col1) as cnt from
(
Select distinct a.Col1, a.Col2 from MyTable a
) b
)
select Col1, Col2
from MyData
where cnt > 1
order by Col1
我想知道的是什么是更好的方法来做到这一点 - 我没有设法使用GROUP BY
&来做到这一点,HAVING
并且可能认为这可以使用自连接来完成......这更像是一个问题 /学习在更好(也许更有效)的查询中获得结果的新方法。
谢谢!!!