可能重複:
Oracle Delete Rows Matching On Multiple Values如何從Oracle數據庫中刪除重複的行?
我們已經意外意味着大多數(但不是全部)行有插入有相同的數據兩次表在表中出現兩次。簡而言之,我想要一條SQL語句來刪除一行的一個版本,同時保留另一個版本;我不介意刪除哪個版本,因爲它們是相同的。
表結構是這樣的:
FID,UNIQUE_ID,COL3,COL4 ....
Unique_ID
是主鍵,這意味着每一個僅出現一次。 FID
是每個功能獨有的關鍵,所以如果它出現多次,那麼重複應該被刪除。
要選擇有重複的特點是:
select count(*) from TABLE GROUP by FID
不幸的是我無法弄清楚如何從去一個SQL語句刪除,將刪除多餘的行只留下每個之一。
此類問題已被問及之前,我已嘗試創建與獨特的表,但我如何獲得所有列沒有命名它們?這隻能得到單柱FID和(見下)中的所有列,以保持給出了一個:ORA-00936: missing expression
CREATE TABLE secondtable NOLOGGING as select distinct FID from TABLE
當你得到解決方案後,我認真地推薦你將你的數據庫歸一化,因爲重複記錄(所謂的冗餘)很可能是非歸一化數據庫的結果。 – Kushal
@Kush - 我們無法規範化數據庫,因爲許多不同的應用程序都使用它。這是有人在2007年兩次加載數據的結果,但我們沒有使用過這麼多,所以沒有注意到。感謝您的建議,儘管 –