MySQLのUPDATE文でLIMIT句を使用して上位3件のレコードを更新する

MySQLでは、UPDATEでLIMIT句とORDER BYを使用して上位n件のレコードを更新することができます。

更新前にORDER BYで指定した方法で並べ替えられ(ASCは昇順、DESCは降順、省略した場合は昇順)、LIMIT句で指定した行数のレコードが更新されます。

構文:
UPDATE テーブル
SET カラム1={expr1|DEFAULT} [, カラム2={expr2|DEFAULT}] ...
[WHERE 条件]
ORDER BY カラム [ASC | DESC]
LIMIT 行数;


例えば、データベースtestのsalesテーブルに10件のレコードが格納されていて、priceの値が低い順に3件のレコードのquantityに1を加算する場合は以下のSQL文になります。

UPDATE test.sales SET quantity = quantity + 1 ORDER BY price LIMIT 3;

実際に実行してみると以下のような結果になります。

更新前のデータ:

mysql> select * from test.sales order by price;
+----------+-------------+---------+----------+
| ordernum | product     | price   | quantity |
+----------+-------------+---------+----------+
|        3 | WII         |    4500 | 1        |
|        5 | PS3         |   10000 | 3        |
|        8 | G-SHOCK     |   12000 | 8        |
|        9 | EXILIM      |   14000 | 7        |
|        1 | PS4         |   20000 | 1        |
|        6 | COOLPIX     |   23000 | 1        |
|        7 | amazon fire |   25000 | 6        |
|       10 | GoPro       |   27000 | 3        |
|        4 | iPhone SE   |   50000 | 4        |
|        2 | iPhone 6    | 1000000 | 2        |
+----------+-------------+---------+----------+
10 rows in set (0.00 sec)

strong>UPDATE文を実行:

mysql> UPDATE test.sales SET quantity = quantity + 1 ORDER BY price LIMIT 3;
Query OK, 3 rows affected (0.03 sec)
Rows matched: 3 Changed: 3 Warnings: 0

更新後のデータ:

mysql> select * from test.sales order by price;
+----------+-------------+---------+----------+
| ordernum | product     | price   | quantity |
+----------+-------------+---------+----------+
|        3 | WII         |    4500 | 2        |
|        5 | PS3         |   10000 | 4        |
|        8 | G-SHOCK     |   12000 | 9        |
|        9 | EXILIM      |   14000 | 7        |
|        1 | PS4         |   20000 | 1        |
|        6 | COOLPIX     |   23000 | 1        |
|        7 | amazon fire |   25000 | 6        |
|       10 | GoPro       |   27000 | 3        |
|        4 | iPhone SE   |   50000 | 4        |
|        2 | iPhone 6    | 1000000 | 2        |
+----------+-------------+---------+----------+
10 rows in set (0.00 sec)

上位3件のレコードだけquantityが1加算されていることがわかると思います。

参考:
MySQLリファレンスマニュアル 13.2.11 UPDATE 構文

[2590] Posted by kagahiro at 2016/09/30 11:43:12
クローズ | 1 point | Link (3) | Trackback (1) | Comment (0)

キーワード

MySQL 上位n件 UPDATE 

ジャパンのホームページ


MySQLのUPDATE文でLIMIT句を使用して上位3件のレコードを更新する 関連リンク

SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL)
「先頭からn件のレコード(結果セット)だけ取得する方法が知りたい。」というのは、データベース関連のメーリングなどで以前からよくある質問ですが、SQL ServerやOracle、MySQL、PostgreSQLなどRDBやバージョンによ...
MySQLのDELETE文でLIMIT句を使用して上位3件のレコードを削除する
MySQLでは、DELETE文でLIMIT句とORDER BYを使用して上位n件のレコードを削除することができます。削除前にORDER BYで指定した方法で並べ替えられ(ASCは昇順、DESCは降順、省略した場合は昇順)、LI...
MySQLのINSERT ... SELECT文でLIMIT句を使用して上位3件のレコードをテーブルに追加する
MySQLでは、INSERT ... SELECTを使用することで1つまたは複数のテーブルからレコードをテーブルに追加できます。
また、SELECTでLIMIT句とORDER BYを使用して上位n件のレコードのみテーブルに追加することもで...

MySQLのUPDATE文でLIMIT句を使用して上位3件のレコードを更新する トラックバック

トラックバックURL :

Linked from ネット掲示板 - ゴクBBS : SQL質問スレ at 2016/09/30 11:47:32
このスレでは「こういうことをやりたいんだけどSQLでどう書くの?」「こういうSQLを書いたんだけどうまく動きません><」といった質問を受け付けています。SQLはISOによって標準化されていますが、標準を100%実装し...

MySQLのUPDATE文でLIMIT句を使用して上位3件のレコードを更新するへのコメント


< 前の投稿      次の投稿 >

アクセスランキング

今日のアクセスランキング TOP 10

  1. Live Shell (1 PV)
  2. 年商1.5億円のプロブロガー「イケダハヤト」氏がブログを1億円で売りに出す #まだ東京で消耗してるの? (1 PV)
  3. Authority - 日本の影響力のあるブログランキング100 (1 PV)
  4. ソフトウェアテスト (1 PV)
  5. 検索エンジン (1 PV)
  6. Wikipedia、資金不足で閉鎖の危機 (1 PV)
  7. JM Project (1 PV)

今月のアクセスランキング TOP 10

  1. SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (292 PV)
  2. 2NN 2ちゃんねるニュース速報+ナビ (41 PV)
  3. 安全性重視の完全無料ナンピンマーチンEA「Million Dollar(ミリオンダラー)」 #FX #ゴールド #ビットコイン (31 PV)
  4. [PR]noteで販売している自作EAの一覧 (31 PV)
  5. Google News (グーグルニュース)日本版 (25 PV)
  6. 裁量トレードを半自動化する無料のMT5向け裁量トレード支援ツール(裁量補助EA)「PositionKeeper MT5」 #FX (23 PV)
  7. SQLiteのSELECT文で上位 (TOP) n件のデータを取得する (22 PV)
  8. 自作のMT4向け無料EA(口座縛り無し、ブローカー縛り無し、使用期限無し)とゴゴジャン出品中の有料EAの一覧 #MT4 (20 PV)
  9. 2chまとめサイト - 痛いニュース(ノ∀`) (20 PV)
  10. 仲値トレードが簡単にできる無料EA「NAKANE3 Ver 2.04」 #MT4 (17 PV)

アクセス統計

ディレクトリ

関連サイト