mysql update文とlimitの組み合わせの使用

577 ワード

データ・テーブル内のどの行からどの行までのフィールドの値を一括更新する必要がある場合があります.
mysqlのupdate文は、更新前のローの数だけをサポートし、あるローから別のロー、例えばUPDATE tb_name SET column_name='test' ORDER BY id ASC LIMIT 30;が前の30ローのフィールドの内容を更新することはサポートされていません.問題はありません.UPDATE tb_name SET column_name='test' ORDER BY id ASC LIMIT 20,10;は、20行から30行までのフィールドの内容を更新します.これにより、エラーが発生します.
解決策は、サブクエリ方式UPDATE tb_name SET column_name='test' WHERE id in (SELECT id FROM (SELECT * FROM tb_name ORDER BY id ASC LIMIT 20,10) AS tt);を用いることで、id昇順に並べ替えられた20番目から30番目のデータのフィールドの内容を更新することができる.