重複行を作成していたコードにバグがありました。ここでは、重複を削除する前に、私のテーブルの2つの列のサンプルを見ています。私は、私はこれらの行を持つテーブルが残っていますように、テーブルから重複を削除するために必要な、そしてこれを達成するために、最終的だったが、行を削除する代わりに行を挿入するクエリ
SampleID ProjectID
0 c0f5e4cc-7664-4d70-ab3f-6ff832aa8ece
0 c0f5e4cc-7664-4d70-ab3f-6ff832aa8ece
0 c0f5e4cc-7664-4d70-ab3f-6ff832aa8ece
0 c0f5e4cc-7664-4d70-ab3f-6ff832aa8ece
1 c0f5e4cc-7664-4d70-ab3f-6ff832aa8ece
1 c0f5e4cc-7664-4d70-ab3f-6ff832aa8ece
1 c0f5e4cc-7664-4d70-ab3f-6ff832aa8ece
1 c0f5e4cc-7664-4d70-ab3f-6ff832aa8ece
1 c0f5e4cc-7664-4d70-ab3f-6ff832aa8ece
1 c0f5e4cc-7664-4d70-ab3f-6ff832aa8ece
0 00e95061-96e2-4db5-999e-5ca629561c50
0 00e95061-96e2-4db5-999e-5ca629561c50
0 00e95061-96e2-4db5-999e-5ca629561c50
1 00e95061-96e2-4db5-999e-5ca629561c50
1 00e95061-96e2-4db5-999e-5ca629561c50
1 00e95061-96e2-4db5-999e-5ca629561c50
1 00e95061-96e2-4db5-999e-5ca629561c50
1 00e95061-96e2-4db5-999e-5ca629561c50
(ID列、ID
と無関係である他の列があります)私の質問は、私が最初に試したクエリが期待通りに動作しなかった理由です。
SampleID ProjectID
0 c0f5e4cc-7664-4d70-ab3f-6ff832aa8ece
1 c0f5e4cc-7664-4d70-ab3f-6ff832aa8ece
0 00e95061-96e2-4db5-999e-5ca629561c50
1 00e95061-96e2-4db5-999e-5ca629561c50
私が試したクエリが
DELETE FROM INS_Sample WHERE ID NOT IN
(SELECT MIN(ID) FROM INS_Sample GROUP BY SampleID, ProjectID);
であり、私はthis質問への答えでそれを見つけました。私はこのクエリを実行したとき、それは無期限に実行されていたので、私はそれを停止し、クエリは実際にテーブルに重複行を挿入していた。私が最初にSELECT MIN(ID) FROM INS_Sample GROUP BY SampleID, ProjectID
を実行し、私は私が望む結果を得ることができる前に、それはこの
DELETE FROM INS_Sample WHERE ID NOT IN
(1234, 5678, /*a lot more IDs*/);
ように見えたように、私の元のクエリに貼り付ける結果ID
秒のカンマ区切りリストを作成しなければなりませんでした。なぜ私の最初のクエリは正常に動作しないのですか?また、テーブル内に行がどのように挿入されたのでしょうか?私のクエリエディタには、テーブルにあるものを見るためのselect以外のものはありません。
のようなクエリを試すことができます現時点ではAzure DBだから、削除された行を復元するために何かがあるのかもしれないのだろうか?私はこの時点でわらでつかんでいます。 – Sam07
@Samの場合、フル/差分バックアップのいずれかのテーブルのバックアップがあります。うまくいけばそこから復元することができます。 – Rahul
私は実際に重複行を復元したくありません。私はそれらを削除する必要がありました。私は元のクエリを実行した理由が、それらを削除する代わりに再度行を挿入していた理由を理解できません。私はバグの多いソフトウェアでより多くのデータを実行してテーブルに重複した行を作成し、それを再現しようとします。 – Sam07