私はそれがどうなったか分かりません。OIDでレコードを削除するには?
これが私のテーブルです:
idはNULL
することはできず、自動増加している
id
date
amount
。これが原因
OID id date amount
710604512 197 2015-03-11 10657.61
710604513 197 2015-03-11 10657.61
IDとして巨大な問題は一意である必要があります。
誰かが昨年システムは、次のような状況を作成しました。
これを通常のSQLから修正することはできません。これは、実行する操作が両方の行で行われるためです。
これらのうちの1つを削除する必要があります。
私は日付を再生することはできませんとの両方を削除し、1を挿入する解決策が受け入れられない(それは作成日を記録したログが表示されます)
どのように私はそのOID
で行を削除することができますか?ただORDER BY
句を変更、大きいOID
でレコードを削除するには
WITH cte AS (
SELECT *,
ROW_NUMBER() OVER (PARTITION BY id, date, amount ORDER BY OID DESC) AS rn
FROM yourTable
)
DELETE FROM cte WHERE rn=2; -- or rn >=2 to delete all duplicates
:
ありがとうございます。私はOIDをフィルタリングできるかどうかわからなかった – avi