MySQL サブクエリ制限: 最新 15 件を除く投稿の削除
データベース最適化の領域では、冗長なデータや古いデータを削除することが必要になることがよくあります。この質問では、MySQL サブクエリを使用して、最新の 15 件を除くすべての投稿を削除する方法について説明します。
元のクエリ:
DELETE FROM posts WHERE id NOT IN (SELECT id FROM posts ORDER BY timestamp DESC LIMIT 0, 15)
ただし、MySQL が次のクエリをサポートしていないため、このクエリではエラーが発生します。以前のバージョンの「LIMIT & IN/ALL/ANY/SOME」サブクエリ。この問題に対処するために、変更されたクエリを使用できます。
DELETE FROM posts WHERE id NOT IN ( SELECT * FROM ( SELECT id FROM posts ORDER BY timestamp DESC LIMIT 0, 15 ) AS t);
この変更されたクエリでは、別名 't' を使用して追加のサブクエリが派生テーブルとして導入されます。この派生テーブルには、タイムスタンプに基づいて降順に並べ替えられた、最新の 15 件の投稿の ID が含まれています。次に、メイン クエリはこの派生テーブルを利用して、投稿を削除するときに特定の ID を除外します。
この回避策を使用すると、MySQL バージョンで最新の 15 件を除くすべての投稿を削除するという望ましい結果を達成することができます。 「LIMIT & IN/ALL/ANY/SOME」サブクエリはサポートされません。この改訂されたアプローチでは、最新の投稿を今後の参照のために保存しながら、古い投稿を効果的に削除します。
以上が「LIMIT & IN」サブクエリのサポートなしで MySQL の最新の 15 件を除くすべての投稿を削除する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。