ホームページ >データベース >mysql チュートリアル >MySQL 5.5.8 で最新 15 件以外の投稿を削除するにはどうすればよいですか?

MySQL 5.5.8 で最新 15 件以外の投稿を削除するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-11-11 15:13:03581ブラウズ

How to Delete Posts Outside the Latest 15 in MySQL 5.5.8?

mySQL サブクエリ制限: 「このバージョンの MySQL は 'LIMIT & IN/ALL/ANY/SOME サブクエリをサポートしていません」エラーを解決します

提供されたクエリは、最新の 15 エントリに含まれていない投稿を削除しようとしますが、「MySQL はまだ 'LIMIT & IN/ALL/ANY/SOME subquery' をサポートしていません。」というエラーが発生します。これは MySQL バージョンの制限によるものです。 5.5.8.

提案された解決策:

この制限を克服するには、次の変更されたクエリを採用します:

DELETE 
FROM posts 
WHERE id not in (
      SELECT * FROM (
            SELECT id 
            FROM posts 
            ORDER BY timestamp desc limit 0, 15
      ) 
      as t);

このクエリはネストされたクエリを使用します。 SELECT ステートメントを使用して、最新の 15 件の投稿の ID を取得するサブクエリを作成します。次に、メイン クエリはこのサブクエリを利用して、この範囲外にある投稿を特定して削除します。

説明:

内部的に、変更されたクエリは 2 段階のプロセスに従います。 :

  1. サブクエリ エイリアス 't' で表される一時テーブルが作成されます。このテーブルには、最新の 15 件の投稿の ID が含まれます。
  2. その後、メイン クエリはこの一時テーブルを使用して、サブクエリ内に ID が存在しない投稿をフィルタリングして除外し、目的の削除を実現します。

以上がMySQL 5.5.8 で最新 15 件以外の投稿を削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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