我正在爲處理排名競爭的公司工作。SQL過程:刪除重複項,重新分配外鍵引用
不幸的是,他們的成員表對郵件沒有唯一約束,有的用戶已經創建與每個種族或團隊他們是相同的電子郵件新的帳戶。
我希望把唯一約束在列,以防止在未來的任何重複,但...
問題:我怎樣才能刪除重複使用單個查詢不失連接到他們的數據?
我認爲它與更新所有外鍵以匹配用戶的一個實例然後刪除重複項有關。
澄清: 在下面的例子中,標記的行是指與ID的重複成員:03,04,05和06 在這種情況下,解決辦法是:
- 外鍵引用將ID 03和05更改爲01.
- 帶ID 04和06的外鍵引用更改爲02.
- 已刪除ID爲03,04,05和06的重複成員。
但是,這怎麼能在MSSQL中完成?
Member table
ID | Username | Gender | Email
01 | User1 | Male | [email protected]
02 | User2 | Female | [email protected]
*03 | User3 | Male | [email protected]
*04 | User4 | Female | [email protected]
*05 | User5 | Male | [email protected]
*06 | User6 | Female | [email protected]
MemberToTeam table
MemberID_fk | TeamID_fk
01 | 01
02 | 01
*03 | 02
*04 | 02
*05 | 03
*06 | 03
RaceRank table
RaceID_fk | MemberID_fk | Ranking
01 | 01 | 12
01 | 02 | 1
*02 | 03 | 5
*02 | 04 | 7
*03 | 05 | 4
*03 | 06 | 9
感謝您的幫助。
請出示一些樣本數據去與你的解釋。 –
嗨,我更新了我的問題。感謝您的評論。 :) – LiHRaM
您的方案中的步驟正是您需要做的。更新外鍵引用,然後刪除重複項。不確定你在問什麼。這是一條UPDATE語句,後面跟着一條DELETE語句。 –