MySQL: LIMIT を使用して複数の行を更新する
MySQL では、LIMIT 句を使用してクエリの影響を受ける行の数を制限できます。 。ただし、UPDATE ステートメントで LIMIT を使用する場合、特定の範囲の行を更新しようとすると一般的なエラーが発生します。
次のクエリを考えてみましょう:
UPDATE messages SET test_read=1 WHERE userid='xyz' ORDER BY date_added DESC LIMIT 5, 5;
このクエリは 5 行を更新することを目的としています。 「messages」テーブルの 5 行目から始まる行で、「userid」が「xyz」と等しいもの。ただし、このクエリはエラーになります。
その理由を理解するには、このコンテキストの LIMIT 句がオフセットと最大行数を定義していることに注意することが重要です。この例では、表示される行数を更新するのではなく、取得して制限します。特定の範囲の行を更新するには、代わりにサブクエリを使用できます。
UPDATE messages SET test_read=1 WHERE id IN ( SELECT id FROM ( SELECT id FROM messages ORDER BY date_added DESC LIMIT 5, 5 ) tmp );
この変更されたクエリでは、サブクエリを使用して、更新する必要がある 5 つの行の ID を選択します。次に、メインの UPDATE ステートメントはこれらの ID を照合し、更新を実行します。これにより、必要な行のみが確実に変更されます。
以上がLIMIT を使用して MySQL の特定の範囲の行を正しく更新するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。