MySQLのINSERT ... SELECT文でLIMIT句を使用して上位3件のレコードをテーブルに追加する

MySQLでは、INSERT ... SELECTを使用することで1つまたは複数のテーブルからレコードをテーブルに追加できます。
また、SELECTでLIMIT句とORDER BYを使用して上位n件のレコードのみテーブルに追加することもできます。


構文:
INSERT
INTO テーブル
[(カラム, ...)]
SELECT ...

追加前にORDER BYで指定した方法で並べ替えられ、LIMIT句で指定した行数のレコードが追加されます。

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

INSERT INTO test.junk (product,price) SELECT product,price FROM test.sales ORDER BY price Limit 3;

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

salesテーブルのデータ:

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)

実行前のjunkテーブルのデータ:

mysql> select * from test.junk;
Empty set (0.00 sec)

INSERT ... SELECT文を実行:

mysql> INSERT INTO test.junk (product,price) SELECT product,price FROM test.sales ORDER BY price Limit 3;
Query OK, 3 rows affected (0.05 sec)
Records: 3 Duplicates: 0 Warnings: 0

実行後のjunkテーブルのデータ:

mysql> select * from test.junk;
+---------+-------+
| product | price |
+---------+-------+
| WII     |  4500 |
| PS3     | 10000 |
| G-SHOCK | 12000 |
+---------+-------+
3 rows in set (0.00 sec)

参考:
MySQL 5.6 リファレンスマニュアル INSERT ... SELECT 構文


[2591] Posted by kagahiro at 2016/09/30 15:29:37
オープン | 1 point | Link (3) | Trackback (1) | Comment (0)

キーワード

MySQL 上位n件 UPDATE SQL 

ジャパンのホームページ


MySQLのINSERT ... SELECT文でLIMIT句を使用して上位3件のレコードをテーブルに追加する 関連リンク

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

削除前にORDER BYで指定した方法で並べ替えられ(ASCは昇順、DESCは降順、省略した場合は昇順)、LI...

MySQLのINSERT ... SELECT文でLIMIT句を使用して上位3件のレコードをテーブルに追加する トラックバック

トラックバックURL :

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

MySQLのINSERT ... SELECT文でLIMIT句を使用して上位3件のレコードをテーブルに追加するへのコメント


詳細の入力フィールドを表示する

おすすめ  (チェックしてコメントすると最新情報に掲載)
コメント :

< 前の投稿      次の投稿 >

アクセスランキング

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

  1. 有力将棋系ユーチューバーのショウヤンさんが将棋ウォーズで「ソフト指し」を告白し衝撃走る (12 PV)
  2. Google Maps(グーグルマップ)日本版 - 地図検索、ルート情報 (11 PV)
  3. Google News (グーグルニュース)日本版 (6 PV)
  4. 嬉野流開発者のたまごん(嬉野宏明)さんがソフト指し疑惑で将棋倶楽部24のアカウントを停止されてしまう #将棋 (5 PV)
  5. ドイツ銀行問題 7500兆円のCDS(デリバティブ)危機 #世界的金融危機 (5 PV)
  6. [将棋]ユーチューバーのクロノさんが将棋ウォーズ運営からアカウント停止の警告を受ける #ソフト指し #複垢 #アカBAN (3 PV)
  7. ビットコイン(1BTC)、有名個人投資家「cis(シス)」さんの買いで世界最高値を更新 (2 PV)
  8. YouTubeドラマまとめ ドラマ・映画 -VideoNavi- #無料 (2 PV)
  9. [FX]ドル円(#USDJPY)リアルタイムチャート #市況実況 (2 PV)
  10. PHPでMySQLに接続して、SELECTでデータを取得するサンプルプログラム (2 PV)

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

  1. SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (2168 PV)
  2. 有力将棋系ユーチューバーのショウヤンさんが将棋ウォーズで「ソフト指し」を告白し衝撃走る (653 PV)
  3. Google News (グーグルニュース)日本版 (494 PV)
  4. 最新のGoogle News(グーグルニュース)日本版のRSSが取得できるURL (421 PV)
  5. [将棋]角換わり▲4五桂速攻(△6五桂速攻) #佐藤天彦名人 #三浦弘行九段 (244 PV)
  6. [将棋]ユーチューバーのクロノさんが将棋ウォーズ運営からアカウント停止の警告を受ける #ソフト指し #複垢 #アカBAN (243 PV)
  7. Google Finance(グーグルファイナンス)日本版が表示されるようになってますが・・・ (188 PV)
  8. 嬉野流開発者のたまごん(嬉野宏明)さんがソフト指し疑惑で将棋倶楽部24のアカウントを停止されてしまう #将棋 (173 PV)
  9. [Perl]UTF-8でエンコードされた文字列の文字数を取得するコード (146 PV)
  10. ウェブページを1回だけリロード(再表示)する方法 (145 PV)

アクセス統計

ディレクトリ

関連サイト