ホームページ  >  記事  >  データベース  >  サブクエリを使用して MySQL で特定の基準に基づいてレコードを削除する方法

サブクエリを使用して MySQL で特定の基準に基づいてレコードを削除する方法

DDD
DDDオリジナル
2024-11-09 22:08:02547ブラウズ

How to Delete Records Based on a Specific Criteria in MySQL using Subqueries?

MySQL でのデータ操作にサブクエリを使用する

ここでのタスクには、特定の基準に基づいてテーブルからレコードを選択的に削除することが含まれます。サブクエリを活用することで、MySQL を使用してこれを実現できます。

まず、次のクエリについて考えてみましょう:

DELETE FROM posts WHERE id NOT IN
(SELECT id FROM posts ORDER BY timestamp DESC LIMIT 0, 15)

このクエリは、最新の 15 レコードに含まれない投稿を削除することを目的としています。 「タイムスタンプ」フィールドの順序に従います。ただし、8.0 より前の MySQL バージョンでは、LIMIT 句を IN サブクエリと組み合わせようとするとエラーが発生します。

この制限を克服するには、ネストされたサブクエリの回避策を採用できます。変更されたクエリは次のようになります。

DELETE 
FROM posts 
WHERE id NOT IN (
      SELECT * FROM (
            SELECT id 
            FROM posts 
            ORDER BY timestamp DESC LIMIT 0, 15
      ) 
      AS t);

この書き換えられたクエリでは、最新の 15 件の投稿の ID を取得する内部サブクエリを作成します。外側のサブクエリは、「AS t」句を使用して結果をエイリアスします。

このネストされたサブクエリのアプローチを使用すると、LIMIT と IN の組み合わせが完全にサポートされていない古い MySQL バージョンでも、効果的に目的の結果を得ることができます。 .

以上がサブクエリを使用して MySQL で特定の基準に基づいてレコードを削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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