MySQL: 制限を使用したレコード更新のクエリ
MySQL を使用する場合、特定のレコードを更新する必要があるシナリオに遭遇する可能性があります。テーブル内の行の範囲。この記事では、UPDATE クエリで LIMIT 句を使用できるかどうかという問題を取り上げ、これを実現する方法についてのガイダンスを提供します。
構文エラーと正しい使用法
最初のクエリでは、1001 レコードから始まる行と次の 1000 レコードを更新しようとしました。ただし、使用されている構文は正しくありません。 MySQL では、LIMIT 句は、更新される行ではなく、選択される行の数を制限するために使用されます。特定の範囲の行を更新する正しい方法は、サブクエリを使用することです。
たとえば、p_id を 3 に設定して最初の 1000 行を更新するには、次のコマンドを使用します。
UPDATE `oltp_db`.`users` SET p_id = 3 WHERE id IN ( SELECT id FROM ( SELECT id FROM `oltp_db`.`users` ORDER BY id ASC LIMIT 0, 1000 ) tmp )
NULL 値の処理
2 番目のクエリで、更新しようとしましたp_id が NULL に設定されている行。ただし、等価性チェックでは NULL 値を非 NULL 値と比較できないため、クエリは失敗します。 NULL の p_id 値を持つ行を更新するには、IS NULL 関数と COALESCE() 関数を使用できます。
UPDATE `oltp_db`.`users` SET p_id = COALESCE(3, p_id) WHERE p_id IS NULL
これらのガイドラインに従うことで、NULL を扱う場合でも、MySQL テーブル内の特定の行を効果的に更新できます。値。
以上がLIMIT 句を使用して MySQL の特定の範囲の行を更新するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。