MySQLサブクエリを使ったINSERT文

Twitter ツイート Hatena Bookmark ブックマーク

これは知らなかった。
というかMySQLってサブクエリが使えるのがバージョン4.1以降だったので昔覚えた時はサブクエリすら知らなかったwww

usrテーブル
+————-+————–+——+—–+———+——-+
| Field | Type | Null | Key | Default | Extra |
+————-+————–+——+—–+———+——-+
| user_id | char(7) | NO | PRI | | |
| l_name | varchar(20) | YES | | NULL | |
| f_name | varchar(20) | YES | | NULL | |
| l_name_kana | varchar(100) | YES | | NULL | |
| f_name_kana | varchar(100) | YES | | NULL | |
| prefecture | varchar(15) | YES | | NULL | |
| city | varchar(20) | YES | | NULL | |
| o_address | varchar(100) | YES | | NULL | |
| tel | varchar(20) | YES | | NULL | |
| email | varchar(255) | YES | | NULL | |
+————-+————–+——+—–+———+——-+

employeeテーブル
+————-+————–+——+—–+———+——-+
| Field | Type | Null | Key | Default | Extra |
+————-+————–+——+—–+———+——-+
| s_id | char(7) | NO | PRI | | |
| l_name | varchar(20) | YES | | NULL | |
| f_name | varchar(20) | YES | | NULL | |
| l_name_kana | varchar(100) | YES | | NULL | |
| f_name_kana | varchar(100) | YES | | NULL | |
| sex | smallint(6) | YES | | NULL | |
| class | varchar(20) | YES | | NULL | |
| depart_id | char(3) | YES | | NULL | |
| b_id | char(7) | YES | | NULL | |
| last_update | date | YES | | NULL | |
| retired | smallint(6) | YES | | NULL | |
+————-+————–+——+—–+———+——-+

VALUES句の変わりにSELECT文を書く

1
2
3
4
INSERT INTO usr(user_id,l_name,f_name,email) SELECT  s_id, l_name, f_name, '[email protected]'
FROM employee WHERE last_update >= '2005-01-01';```

そうそう、<a href="http://dev.mysql.com/doc/refman/4.1/ja/rewriting-subqueries.html" target="_brank">サブクエリを使わない書き方</a>に直す記事をみつけました。
comments powered by Disqus
Built with Hugo
テーマ StackJimmy によって設計されています。