ホームページ  >  記事  >  データベース  >  LIMIT 句を使用して MySQL の特定の範囲の行を削除するにはどうすればよいですか?

LIMIT 句を使用して MySQL の特定の範囲の行を削除するにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-10-25 13:58:30302ブラウズ

How to Delete a Specific Range of Rows in MySQL Using LIMIT Clause?

制限付きの MySQL DELETE ステートメント

ユーザーが次のクエリを使用してテーブルから行を削除しようとしているときにエラーが発生しました:

DELETE FROM `chat_messages` ORDER BY `timestamp` DESC LIMIT 20, 50;

エラー メッセージは、構文が間違っていることを示しています。

説明

ここで使用されている DELETE ステートメントに LIMIT にオフセットが含まれているためにエラーが発生します。句。これは MySQL では許可されていません。 LIMIT 句では、削除する行数のみを指定できます。

解決策

テーブルから指定した範囲の行を削除するには、オフセット機能を使用できません。 LIMIT句で。代わりに、サブクエリを使用して削除する行を選択し、主キー値を使用して行を削除する必要があります。

このシナリオでは次のクエリを使用できます:

DELETE FROM `chat_messages`
WHERE `id` IN (
    SELECT `id` FROM (
        SELECT `id` FROM `chat_messages`
        ORDER BY `timestamp` DESC
        LIMIT 20, 50
    ) AS `x`
)

このクエリは二重ネストを使用して削除する行を選択し、MySQL の制限を回避します。

以上がLIMIT 句を使用して MySQL の特定の範囲の行を削除するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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