我有一個包含列c1,c2,c3和c4的表。我必須檢索具有相同c1和c2的記錄中具有max(c3)的記錄行,所以我這樣寫。在共享相同列值的記錄組中選擇「最大」記錄
select *
from XXX a
where not exists (
select 1
from XXX b
where a.c1 = b.c1
and a.c2 = b.c2
and a.c3 > b.c3
)
但是,我的老人說,這是不高效的,因爲查詢將全面掃描表兩次。處理上述情況的更好方法是什麼?
備註:我正在使用Oracle 11g。
樣品輸入: c1 c2 c3 c4 1 1 1 a 1 1 2 b 1 1 3 c 2 1 1 d 2 1 2 e
結果: c1 c2 c3 c4 1 1 3 c 2 1 2 e
用相同的C1和C2手段C1 = C2吧? – TechDo
給出樣本輸入和輸出可能有助於清除問題 – hkutluay
您能澄清爲什麼在表上使用自連接嗎?你能否用一些輸出清楚地解釋這個問題? – user1658435