ホームページ >データベース >mysql チュートリアル >「LIMIT & IN」サブクエリのサポートなしで MySQL の最新の 15 件を除くすべての投稿を削除する方法

「LIMIT & IN」サブクエリのサポートなしで MySQL の最新の 15 件を除くすべての投稿を削除する方法

Linda Hamilton
Linda Hamiltonオリジナル
2024-11-11 15:44:03241ブラウズ

How to Delete All Posts Except the Latest 15 in MySQL Without 'LIMIT & IN' Subquery Support?

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

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