ホームページ > データベース > mysql チュートリアル > MySQL 5.0 で一意でない ID を持つ行を効率的に削除するにはどうすればよいですか?

MySQL 5.0 で一意でない ID を持つ行を効率的に削除するにはどうすればよいですか?

DDD
リリース: 2024-12-25 16:48:15
オリジナル
402 人が閲覧しました

How to Efficiently Delete Rows with Non-Unique IDs in MySQL 5.0?

一意でない ID を削除するための MySQL クエリの修正

提供されたクエリは MySQL 5.0 では機能しません。この記事では、この問題に対処し、MySQL で一意でない ID を持つ行を削除するための代替ソリューションを提供します。

元の問題:

DELETE FROM posts WHERE>
ログイン後にコピー

説明:

このクエリは、「id」が一致する行を「posts」テーブルから削除しようとします。テーブル内に複数回出現する行の「id」。ただし、MySQL 5.0 では、DELETE ステートメントの条件としてサブクエリを使用することはできません。

解決策:

1. IN 句の使用:

「=」を使用する代わりに、条件を「IN」に変更して、「id」をサブクエリの結果セットと比較します。

DELETE FROM posts WHERE id IN (
  SELECT id FROM posts GROUP BY id HAVING (COUNT(id) > 1)
)
ログイン後にコピー

2. SELECT クエリと DELETE クエリを分離する:

サブクエリ (SELECT ステートメント) を DELETE ステートメントから分離し、それらを順番に実行します。

SELECT id FROM posts GROUP BY id HAVING (COUNT(id) > 1) INTO @duplicate_ids;
DELETE FROM posts WHERE id IN (@duplicate_ids);
ログイン後にコピー

3.エイリアスを使用したネストされたサブクエリ:

サブクエリをネストし、DELETE ステートメントで使用される結果にエイリアスを付けます。

DELETE FROM posts WHERE id IN (
  SELECT * FROM (
    SELECT id FROM posts GROUP BY id HAVING (COUNT(id) > 1)
  ) AS p
)
ログイン後にコピー

4. JOIN の使用:

JOIN を使用して、テーブルの「id」をサブクエリの結果セットと比較します。

DELETE a.id
FROM posts AS a
JOIN (
  SELECT id, COUNT(*) AS num
  FROM posts
  GROUP BY id
  HAVING num > 1
) AS b
ON a.id = b.id
ログイン後にコピー

以上がMySQL 5.0 で一意でない ID を持つ行を効率的に削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート