的SQL重複數據刪除名單我有ID的兩列,像這樣的表:元組
╔════════╦══════╗
║ Master ║ Dupe ║
╠════════╬══════╣
║ 2 ║ 7 ║
║ 3 ║ 6 ║
║ 6 ║ 7 ║
║ 20 ║ 25 ║
║ 75 ║ 25 ║
╚════════╩══════╝
每一行代表一個SQL表兩行被認爲是相互重複的ID。
此表格可以包含數千個條目,但不保證除Master
列以外的數據按升序排列,如圖所示。任一列都可以包含與另一列相同的ID,可能會針對不同或相同的合作伙伴ID。再次 - 沒有保證。
從這張表格中,我想得到一個Master及其所有可能的模糊的索引。如下圖所示。
期望的結果:
- 最低ID應保持作爲主
- 一欺騙的所有後續愚弄應該映射回到相同的(最低ID)主
針對上述情況,期望的輸出將如下所示(但列不必分類):
╔════════╦══════╗
║ Master ║ Dupe ║
╠════════╬══════╣
║ 2 ║ 3 ║
║ 2 ║ 6 ║
║ 2 ║ 7 ║
║ 20 ║ 25 ║
║ 20 ║ 75 ║
╚════════╩══════╝
我發現很難解釋這個問題,所以我的谷歌搜索沒有返回太多。我在想,必須有一個算法來遍歷這樣的元組列表並發現重複。
任何幫助表示讚賞!
編輯:我修改了示例表以更好地解釋它們的內容可能看起來像什麼。
的一些注意事項需要考慮,
- 沒有一個鏈條的保證。它可能都是一個大的連鎖店,很多小的連鎖店或者根本沒有。
- 沒有保證所有配對出現在相反的順序中某處表
從我所看到的,這個問題看起來是遞歸的,我覺得LukStorms是在正確的軌道上,但我可以」噸相當數字它
答案:雖然下面的兩個解決方案從@artm和@LukStorms似乎工作,我發現後者是一個更簡潔和可讀。謝謝你們倆!對一個棘手問題的神奇幫助。我只希望我能給你答案
你能更好地解釋你的邏輯是什麼? 2和3之間的關係的性質是什麼,因爲它出現在結果集中,與原始表格有什麼不同? –
當然,3和6是模糊,6和7是模糊,7和2是模糊。保持最低的ID(2),ID的3,6和7都是2的騙局。 –