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 サイトの他の関連記事を参照してください。