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