ホームページ >データベース >mysql チュートリアル >一意の識別子を持たずに Netezza で重複する行を削除するにはどうすればよいですか?

一意の識別子を持たずに Netezza で重複する行を削除するにはどうすればよいですか?

DDD
DDDオリジナル
2025-01-12 11:28:44738ブラウズ

How to Delete Duplicate Rows in Netezza Without a Unique Identifier?

一意の識別子のない重複を削除: Netezza ソリューション

大規模な Netezza テーブルでは、一意の識別子がないと重複行を削除するのが困難な作業になる可能性があります。提供された SQL クエリは他のデータベースでは機能する可能性がありますが、Netezza では WITH ステートメントの後の DELETE 句の制限により失敗します。

この課題を克服するために、USING キーワードを利用した代替アプローチを提案します。次の Netezza クエリは重複行をシームレスに削除できます:

<code class="language-sql">DELETE FROM table_with_dups T1
USING table_with_dups T2
WHERE T1.ctid < T2.ctid
  AND T1.column1 = T2.column1
  AND T1.column2 = T2.column2
  -- ... add more AND conditions for other columns as needed ...</code>

その仕組みは次のとおりです:

  • USING キーワードは 2 つのテーブル T1 と T2 を関連付け、重複を識別するために T2 を参照しながら T1 に対して DELETE 操作を実行できるようにします。
  • 条件 T1.ctid < T2.ctid は、重複行のうち 1 つだけが削除されることを保証します。
  • AND 条件は、重複の定義に使用される列を指定します。

DELETE を実行する前に、DELETE を SELECT * に置き換え、USING をカンマ (,) に置き換えることで、重複を確認できます。

<code class="language-sql">SELECT * FROM table_with_dups T1, table_with_dups T2
WHERE T1.ctid < T2.ctid
  AND T1.column1 = T2.column1
  AND T1.column2 = T2.column2
  -- ... add more AND conditions for other columns as needed ...</code>

全体として、この Netezza クエリは、複雑なサブクエリやウィンドウ関数を必要とせず、一意の識別子を持たない重複行を削除するための効率的なソリューションを提供します。

以上が一意の識別子を持たずに Netezza で重複する行を削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。