ホームページ > データベース > mysql チュートリアル > Select ステートメントの結果に基づいて MySQL テーブルから行を削除する方法

Select ステートメントの結果に基づいて MySQL テーブルから行を削除する方法

Barbara Streisand
リリース: 2024-12-26 14:25:10
オリジナル
703 人が閲覧しました

How to Delete Rows from a MySQL Table Based on a Select Statement's Results?

MySQL の Select ステートメントからの削除

質問:

に基づいて MySQL テーブルから行を削除するにはどうすればよいですか? select ステートメントの結果?

コード (MySQL 5.0):

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

問題:

上記のコードは MySQL 5.0 では機能しないため、有効な解決策を見つけたいと考えています。目標は、一意の ID を持たない行を削除することです。

答え:

Using IN:

MySQL 内、サブクエリは結果セットを返します。 DELETE ステートメントでサブクエリの結果を使用するには、WHERE 句で等号 (=) の代わりに IN 演算子を使用する必要があります。

修正コード:

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

追加考慮事項:

  • 同じクエリ内のサブクエリから同じテーブルを変更することはできません。
  • 個別の SELECT クエリと DELETE クエリを実行するか、ネストされたサブクエリを使用して目的の結果を達成できます。 result.
  • 別のアプローチには、によって提案されている結合の使用が含まれます。マヒル:
DELETE FROM posts p1
WHERE p1.id = (
    SELECT p2.id 
    FROM posts p2
    WHERE p2.id = p1.id
    GROUP BY p2.id
    HAVING COUNT(p2.id) > 1
)
ログイン後にコピー

以上がSelect ステートメントの結果に基づいて MySQL テーブルから行を削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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