ホームページ >データベース >mysql チュートリアル >MySQL の LIMIT 句を使用して特定の数または範囲の行を更新するにはどうすればよいですか?

MySQL の LIMIT 句を使用して特定の数または範囲の行を更新するにはどうすればよいですか?

DDD
DDDオリジナル
2024-12-31 21:56:17738ブラウズ

How Can I Use MySQL's LIMIT Clause to Update a Specific Number or Range of Rows?

MySQL: 複数行更新の制限句

MySQL では、通常、LIMIT 句は、選択される行の数を制限するために使用されます。テーブル。ただし、更新する最大行数を指定するために使用することもできます。ただし、エラーを防ぐために特定の制約を考慮する必要があります。

指定されたクエリ:

UPDATE messages set test_read =1 
WHERE userid='xyz' 
ORDER BY date_added DESC  
LIMIT 5, 5 ;

は、LIMIT の 2 番目のパラメーターが制限ではなくオフセットを指定しているため、失敗します。したがって、クエリは MySQL に 10 行目以降の行を更新するように要求します (最初の 5 行をスキップし、5 のオフセットを適用します)。

この問題を解決するには、次のクエリを使用します。

UPDATE messages set test_read =1 
WHERE userid='xyz' 
ORDER BY date_added DESC  
LIMIT 5 ;

このクエリは最初の 5 行を正しく更新します。

次のような特定の範囲の行を更新したい場合は、 6 番目から 10 番目までは、サブクエリを使用できます。

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
 );

このクエリは、サブクエリを使用して、指定された範囲内の行の ID を選択します。次に、メインクエリはそれらの行をそれに応じて更新します。

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

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