[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
- NAVERまとめ (9 PV)
- W3CがHTMLの第5版である「HTML5」を勧告に到達したと発表 (9 PV)
- [Perl][HTML::Template]<TMPL_LOOP>タグのサンプルプログラム (8 PV)
- Topilog(トピログ) (8 PV)
- ピクシブが「Pawoo(パウー)」以外のインスタンスでも利用可能なMastodon(マストドン)Androidアプリを公開 (8 PV)
- Ruby Draft Specification (8 PV)
- Perl6ディストリビューション「Rakudo Star」 (8 PV)
- 初恋の人からの手紙 (8 PV)
- SEO/SEM 書籍 (8 PV)
- SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (8 PV)
今月のアクセスランキング TOP 10
- SQLのSELECT文で先頭から上位(TOP)10件のレコードを取得する方法(SQL Server、Oracle、MySQL、PostgreSQL) (113 PV)
- 無料掲示板CGIのダウンロード (40 PV)
- 裁量トレードを半自動化する無料のMT5向け裁量トレード支援ツール(裁量補助EA)「PositionKeeper MT5」 #FX (19 PV)
- 自作のMT4向け無料EA(口座縛り無し、ブローカー縛り無し、使用期限無し)とゴゴジャン出品中の有料EAの一覧 #MT4 (19 PV)
- 仲値トレードが簡単にできる無料EA「NAKANE3 Ver 2.04」 #MT4 (19 PV)
- Google News (グーグルニュース)日本版 (19 PV)
- 「国家非常事態」トランプ米大統領が日本に24%の関税を課すと表明 日経平均株価が急落 (15 PV)
- USTREAM(ユーストリーム) 日本語版 無料のライブ映像配信サービス (15 PV)
- 究極の爆益ゴールドナンピンマーチンEA「Extreme MT5」 (14 PV)
- 天上碑 (13 PV)
アクセス統計
ディレクトリ
関連サイト