[INSERT]の検索結果
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 構文
また、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 構文
PerlからDBIモジュールを使ってMySQLのテーブルにINSERT文でシングルクオートの含んだレコードを追加するには、次のようにprepare メソッドでプレースホルダを使ったステートメントハンドルを取得して、execute メソッドで値を渡してやればいいらしい。
my $sth = $dbh->prepare("insert into mytable(foo,bar,baz) VALUES(?,?,?)");
$sth->execute($foo, $bar, $baz);
INSERT文に限らずSQL文で変数値を渡す場合は、プレースホルダを使えばいいのか。
mysqlデータベースにinsertできない
DBI/DBDの使い方
Perl で、バイナリデータを MySQL に登録する
実践ハイパフォーマンスMySQL 第2版
オライリージャパン 著者:Baron Schwartz,Peter Zaitsev,Vadim Tkachenko,Jeremy D. Zawodny,Arjen Lentz,Derek J. Balling 価格:4,830円 評価:★★★★★
- 類似書は全部不要、究極の解説書 ★★★★★
SQLの実務経験のあるプログラマを対象として、トピックごとにSQLプログラミングの基本的な考え方から、データベースの設計、数値・文字・時間といったデータ型、DELETE・INSERT・UPDATEといったテーブル操作、SELECT文、述語や論理演算、グループ化や集計関数、集合演算、部分集合、クエリーの最適化、データ設計などが詳しく解説されているSQLプログラミングのバイブルともいえる書籍。高度なSQLプログラミングテクニックを習得したい人におすすめです。
プログラマのためのSQL 第2版
ピアソンエデュケーション 著者:ジョー セルコ 価格:4,725円 評価:★★★★★
- Smarty ★★★★★
「パソコン(PC)」の使い勝手に大きな影響を与えるのが、文字入力装置である「キーボード」です。しかしながら、パソコンに付属してくるキーボードは、パソコンの厳しい価格競争のため必ずしも「使いやすい」とは言...
(追記あり)
1
アクセスランキング
今日のアクセスランキング TOP 10
- FC2まとめ (4 PV)
- Twitter Lite - 起動時や利用時の読み込み速度が最大30%アップ (3 PV)
- 2ちゃんねる(2ch) (3 PV)
- 大人気のブランド品即時買取サービス「CASH」がDMM.comにたったの70億円で買い叩かれる (2 PV)
- 無料ダイヤルアッププロバイダ「Soloot(ソルート)」 (2 PV)
- ほしい物リスト (2 PV)
- SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (2 PV)
- 掲示板CGI ThreadPlus 1.2 のリリース (2 PV)
- RDB(リレーショナルデータベース) (2 PV)
- 入金0円ですぐにFXが始められる初心者におすすめの海外FXブローカー「XM」 #MT4 #MT5 #口座開設 (2 PV)
今月のアクセスランキング TOP 10
- FC2まとめ (12 PV)
- 将棋ウォーズPCブラウザ版がchrome、Firefox、edgeなどに対応 (8 PV)
- 掲示板CGI ThreadPlus 1.2 のリリース (5 PV)
- 「Kindle for the Web」 (5 PV)
- SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (5 PV)
- Jipanguの配布は終了しました (4 PV)
- [FX]裁量ポジションを簡単に管理できるMT4向け無料の裁量補助EA「PositionKeeper」 (4 PV)
- Twitter Lite - 起動時や利用時の読み込み速度が最大30%アップ (3 PV)
- 「さくらのクラウド」のオプションサービスで「専有ホスト」の提供を開始 (3 PV)
- ドル円(USDJPY)で爆益を狙うハイリスクハイリターンのMT4向けナンピンマーチンEA「Hyper Dollar」 (3 PV)
アクセス統計
ディレクトリ
関連サイト

