[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
- SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (70 PV)
- Google Finance(グーグルファイナンス)- リアルタイム株価情報、金融ニュース、日本株 (20 PV)
- 安全性重視の完全無料ナンピンマーチンEA「Million Dollar(ミリオンダラー)」 #FX #ゴールド #ビットコイン (15 PV)
- MT4向けオープンソースナンピンマーチンEA「Automaton」 (13 PV)
- 裁量トレードを半自動化する無料のMT5向け裁量トレード支援ツール(EA)「PositionKeeper MT5」 #FX (9 PV)
- 完全無料のMT4向けナンピンEA「Nanpin K(ナンピンケイ)」 (5 PV)
- MT4向け無料ヘッジ(両建て)ツール(EA)「STOPPER FREE」 #自動売買 #FX (4 PV)
- MT4向け1ポジアノマリーEA「DAY TRADING」オープンソースライセンス(GPL3)で公開 #ドル円 (4 PV)
- 完全無料のMT5用ナンピンEA「Nanpin K(ナンピンケイ) MT5」 (4 PV)
- [FX]裁量ポジションを簡単に管理できるMT4向け無料EA「PositionKeeper」 (4 PV)
今月のアクセスランキング TOP 10
- SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (1941 PV)
- 安全性重視の完全無料ナンピンマーチンEA「Million Dollar(ミリオンダラー)」 #FX #ゴールド #ビットコイン (316 PV)
- Google Finance(グーグルファイナンス)- リアルタイム株価情報、金融ニュース、日本株 (278 PV)
- MT4向けオープンソースナンピンマーチンEA「Automaton」 (162 PV)
- 自作のMT4向け無料EA(口座縛り無し、ブローカー縛り無し、使用期限無し)とゴゴジャン出品中の有料EAの一覧 #MT4 (144 PV)
- 完全無料のMT5用ナンピンEA「Nanpin K(ナンピンケイ) MT5」 (144 PV)
- [FX]高値更新・安値更新でエントリー、MT4向け無料スキャルピングEA「1Scalper」#システムトレード (136 PV)
- MT4向け1ポジアノマリーEA「DAY TRADING」オープンソースライセンス(GPL3)で公開 #ドル円 (129 PV)
- 完全無料のMT4向けナンピンEA「Nanpin K(ナンピンケイ)」 (117 PV)
- SQLiteのSELECT文で上位 (TOP) n件のデータを取得する (112 PV)
アクセス統計
ディレクトリ
関連サイト