ホームページ >データベース >mysql チュートリアル >新しいテーブルを作成せずにデータベーステーブルから重複行を削除するにはどうすればよいですか?

新しいテーブルを作成せずにデータベーステーブルから重複行を削除するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-26 22:39:16470ブラウズ

How to Delete Duplicate Rows from a Database Table Without Creating a New Table?

テーブルからの重複行の削除

別のテーブルを作成せずにデータベース テーブルから重複行を削除する方法を探します。次のテーブルを考えてみましょう:

id action L11_data
L1_name L1_data L11_data1
L2_name L2_data L11_data2
L3_name L3_data L11_data3
L4_name L4_data L11_data4
L5_name L5_data L11_data1
L6_name L6_data L11_data2
L7_name L7_data L11_data5
L8_name L8_data L11_data1
L9_name L9_data L11_data6
L10_name L10_data L11_data2
L11_name L11_data L11_data7
L12_name L12_data L11_data8
L13_name L13_data L11_data1
L14_name L14_data L11_data6
L15_name L15_data L11_data9

既存の重複行

前述のとおり、テーブルには各アクション グループ内の L11_data 列に重複した値が含まれています。目標は、各アクションの一意の L11_data 値とそれに対応するデータのみを保持することです。

解決策

テーブルに一意の ID フィールドがあると仮定すると、次のクエリ:

DELETE FROM Table
WHERE ID NOT IN
(
SELECT MIN(ID)
FROM Table
GROUP BY action, L11_data
)

クエリ内訳

  • 外側の DELETE ステートメントはテーブルから行を削除します。
  • ネストされた SELECT ステートメントは、アクションと L11_data の一意の組み合わせごとに最小 ID を識別します。
  • WHERE 句は、最小 ID のリストにない ID を持つ行を除外し、重複した行を削除します。 rows.

メモ

  • テーブルに多数のフィールドと行がある場合、クエリの実行は遅くなります。
  • テーブルに一意のインデックスがない場合は、パフォーマンス上の理由からインデックスを追加することをお勧めします。

以上が新しいテーブルを作成せずにデータベーステーブルから重複行を削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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