假設我在Oracle數據庫如下表:甲骨文 - 查找匹配的記錄用不同的值一個字段
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
而且,我想是的記錄,其中,爲Col1
鮮明的列表,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
,可能認爲這也許可以使用自加入...這是更要做一個觀察/學習新方法獲得重新認識的人導致更好的(也許更有效)查詢。
謝謝!
這是行得通! - 謝謝!!!僅僅爲了我的教育,這會比我寫查詢的方式更有效率嗎?另外,由於這只是爲了我學習,你能想出其他方法來做到這一點嗎? - 我只是好奇,看看有什麼可用來增加我的SQL實力:) –
和!!!再次感謝! –
我很高興我能幫上忙。我附加了一些熱門的例子,以其他方式做到這一點 - 僅用於學習目的。 – krokodilko