我有一個要求,我有兩個記錄除了PK以外具有相同的值。我如何刪除其中的一個。我有很多這樣的重複記錄。如何刪除db2數據庫中兩個重複記錄中的一個
1
A
回答
0
一種解決方案是寫打開遊標以由限定重複各列排序的查詢的過程中,並在該行是前一行的副本時使用DELETE ... WHERE CURRENT OF CURSOR
。這裏是我的意思的僞代碼:
sql [ctx] C1 = { SELECT * FROM MyTable ORDER BY dup_column };
sql { FETCH C1 INTO row };
while (!C1.endFetch()) {
if (row.dup_column = prevrow.dup_column) {
sql [ctx] { DELETE FROM MyTable
WHERE CURRENT OF C1 };
}
prevrow.dup_column = row.dup_column;
sql { FETCH C1 INTO ... };
}
C1.close();
0
delete from thetable where pk_column_name=pk_value;
0
DELETE
T1
FROM
My_Table T1
INNER JOIN My_Table T2 ON
T2.duplicate_column = T1.duplicate_column AND
T2.pk_column > T1.pk_column -- You could make this "<" if you wanted too
之後,你可能要考慮看你的數據庫設計,因爲它看起來像你有應該是唯一列但你沒有任何唯一約束。也許這應該是你的PK,或者至少在列上應該有一個唯一的約束。
因爲DB2可能不支持的上方,另一種選擇是使用一個子查詢:
DELETE
FROM
My_Table
WHERE
pk_column IN
(
SELECT
T1.pk_column
FROM
My_Table T1
INNER JOIN My_Table T2 ON
T2.duplicate_column = T1.duplicate_column AND
T2.pk_column > T1.pk_column
)
+0
你在DB2上試過這個嗎? AFAIK,DB2不支持多表DELETE語法。這是對SQL的非標準擴展,由MySQL的。 – 2009-12-31 21:18:21
0
對於每個唯一行,找到最小的id,然後刪除所有剩餘的行。正如Tom H.所建議的那樣,一旦數據清理完畢,就向唯一的列添加一個唯一的約束/索引。
0
如果PK是不同的(讓我們假設名稱爲ID),那麼下面的語句刪除返回的ID
select b.ID as INCORRECT_ID
from TABLE A
join TABLE B on a.FIELD1 = b.FIELD1 and a.FIELD2 = b.FIELD2 (all fields but ID)
where B.ID > A.ID
這樣,您可以通過
delete from TABLE where ID in (...aforementioned statement...)
刪除它們,我不知道是什麼您使用的數據庫,因此可能需要一些語法調整。
相關問題
- 1. 刪除db2中的所有重複記錄。 (不只是重複的記錄)
- 2. 消除DB2表中的重複記錄
- 3. Python重複數據刪除記錄 - 重複數據刪除
- 4. 根據另一個數據庫中的表記錄刪除Hive中的記錄
- 5. 刪除除一個重複記錄以外的所有記錄
- 6. 如何刪除重複的數據庫記錄?
- 7. 從一個MySQL數據庫中刪除重複的單個重複列表
- 8. 如何從sql表中刪除除重複記錄之外的重複記錄?
- 9. 從一個條件刪除Oracle數據庫中的重複行
- 10. 如何從Java中的兩個數組中刪除重複對?
- 11. 刪除數據庫中連接的多個表中的記錄
- 12. MySQL記錄重複數據刪除
- 13. 如何比較delphi中的兩個數組,並從一箇中刪除重複
- 14. 如何刪除重複的記錄,如果其中一個記錄有一個NULL字段?
- 15. 刪除數據庫中的記錄cakephp
- 16. 刪除數據庫中的記錄
- 17. 從兩個表中刪除結果中的重複數據
- 18. 刪除重複記錄而保留一個記錄
- 19. 如何刪除自動存儲在數據庫中的mysql記錄一個月
- 20. 如何在Postgres中刪除我的兩個重複數據行之一?
- 21. SSIS數據流如何刪除重複行但在SSIS中記錄重複項
- 22. 如何刪除postgres表中兩個重複條目的一行?
- 23. 從兩個單獨的SQL數據源中刪除記錄
- 24. 刪除SQL中第一條記錄以外的重複記錄
- 25. 如何從兩個數組中刪除重複的字符串?
- 26. 如何使用兩個鍵刪除數組中的重複項?
- 27. 刪除兩個表之間的重複記錄
- 28. 如何刪除CouchDB中的數據庫中的所有記錄?
- 29. 如何從一個SQL Server數據庫表中刪除重複的行?
- 30. 如何將記錄從一個數據庫複製到另一個數據庫?
使用DELETE語句 - 如果您需要更多,則需要更好地解釋您的需求。 – 2009-12-31 20:53:54