我們如何從下面的表中刪除的邏輯重複(即,當從和向是同一站要麼2行應返回)預先如何刪除邏輯重複在Oracle
from_station| to _station| distance
delhi | mumbai | 5000
mumbai | delhi | 5000
delhi | cochin | 3000
cochin | delhi | 3000
由於
我們如何從下面的表中刪除的邏輯重複(即,當從和向是同一站要麼2行應返回)預先如何刪除邏輯重複在Oracle
from_station| to _station| distance
delhi | mumbai | 5000
mumbai | delhi | 5000
delhi | cochin | 3000
cochin | delhi | 3000
由於
如果你只是想回報結果,那麼你可以做:
select t.*
from t
where t.from_station < t.to_station
union all
select t.*
from t
where t.from_station > t.to_station and
not exists (select 1
from t t2
where t2.from_station = t.to_station and t2.to_station = t.from_station
);
另一種機制是使用聚合:
select least(t.from_station, t. _station) as from_station,
greatest(t.from_station, t. _station) as to_station,
avg(distance)
from t
group by least(t.from_station, t. _station),
greatest(t.from_station, t. _station);
但是,這可以引入不在原始數據中的行(如果兩個城市對之間只存在一行)。
正確答案的匿名downvotes? –
@EngineerDollery。 。 。當我沒有名譽時,我也犯了下調的錯誤。我沒有意識到它真的只是造成敵意,會讓人們忽略你,並阻止讓別人聽我說的話。幾年前,我放棄了冷火雞,儘管我是一個評論,標誌和關閉的狂熱用戶。我會注意到,我不認爲我經常(匿名)匿名低估。 –
@kbball - 它不是拖釣。該網站有標準和投票是爲了鼓勵高質量的問題*和答案*。如果我覺得答案不夠好,我完全有權下調它。如果您不喜歡該網站的工作方式,請隨時爲更改進行宣傳。 –
select distinct
least (from_station,to_station)
,greatest (from_station,to_station)
,distance
from t
你能解釋一下這是什麼嗎?然後我會刪除我的'代碼只有答案是壞的'downvote –
@EngineerDollery。 。 。如果你知道SQL,這個答案(以及我的)也很自我解釋。一個解釋說:「得到站名中較小者和站名較大的不同值」實際上並沒有增加太多的答案。 –
@EngineerDollery,不,這實際上是英語。 –
你有一些id爲獲得單行?+ – scaisEdge
你是什麼意思的邏輯重複?在StackOverflow的問題中儘量具體,以增加回答的機會。 – Blackbam