我的問題與Restricting a LEFT JOIN非常相似,有一個變化。從左外連接刪除重複
假設我有一個SHOP表和另一個表LOCATION。 Location是SHOP的子表,它有兩列感興趣的,一個是Division Key(稱爲KEY)和一個「SHOP」編號。這匹配SHOP表中的數字「NO」。
我想這個左外連接:
SELECT S.NO, L.KEY
FROM SHOP S
LEFT OUTER JOIN LOCATN L ON S.NO = L.SHOP
,但我得到了很多重複的,因爲有一些屬於單店很多地方。我想消除它們,只是得到一個沒有重複的「商店,關鍵」條目列表。
的數據是正確的,但重複出現如下:
SHOP KEY
1 XXX
1 XXX
2 YYY
3 ZZZ
3 ZZZ etc.
我想的數據出現像這個:
SHOP KEY
1 XXX
2 YYY
3 ZZZ etc.
SHOP表:
NO
1
2
3
LOCATION表:
LOCATION SHOP KEY
L-1 1 XXX
L-2 1 XXX
L-3 2 YYY
L-4 3 YYY
L-5 3 YYY
(Oracle 10g數據庫)
儘管如此,您應該不會收到任何重複項目,但如您所述,如果您擁有一個以上的店鋪位置記錄,則可能會獲得多個關鍵店鋪。請解釋或舉例說明你的意思是「重複」。 – 2010-03-28 15:12:11
@Marcus起初我也這麼認爲,但我假設多個位置可以有相同的分割鍵。 – 2010-03-28 15:14:12
@馬庫斯與馬丁:啊,我不認爲我說得很清楚。是多個地點可以擁有相同的分區鍵。 (嚴格地說,divnkey是商店的父母,所以層次結構就像這個Divnkey> Shop> location)。我試圖用適當的分區密鑰數據填充Shop的表格。聽起來很奇怪,但這是一次性的過程,我試圖從表LOCATION的數據中爲表SHOP生成更新腳本 - 通過選擇'update shop set divnkey = ....'命令。不想複雜的問題,所以把簡單的選擇。 – 2010-03-28 16:06:12