指定の行数だけ更新

広告

データを更新する時に更新するデータの行数を指定する方法を確認します。次の書式を使います。

UPDATE tbl_name SET col_name1=expr1 [, col_name2=expr2 ...]
  WHERE where_condition
  LIMIT row_count;

通常はWHERE句の条件に適合するデータの全てに対して更新が行われますが、LIMIT句で指定した行数分だけ更新が行われるとそこで終了します。

例えば次のように記述します。

UPDATE uriage SET price = price / 2 WHERE count < 100 LIMIT 5;

上記では「count」カラムの値が100より小さいデータの中で最初の5行分だけ「price」カラムの値を半分にします。

サンプル

実際に試してみます。まず次のようなテーブルを作成します。

mysql> create table uriage(name varchar(20), price int, count int);

p8-1

テーブルにはデータを次のように格納しておきます。

p8-2

では「count」カラムの値が10以下のデータを対象に「price」カラムの値を20引きます。この時、更新する行数は2行にします。

mysql> update uriage set price = price - 20 
    -> where count <= 10 limit 2;

p8-3

ではデータを取得して確認してみます。

p8-4

WHERE句で指定した条件に該当するデータは4行ありましたが、LIMIT句で2行と指定してますので最初の2行だけが更新されています。

( Written by Tatsuo Ikura )