MySQL

 

MySQLでcreateとinsertを同時に行う

MySQLのSQLをより短く書きましょう!MySQLは互換性等の観点から複数の書き方が可能です。今回はcreateについて。実はcreateとselectを同時に行う事ができます。

新サイト、tree-mapsを公開しました!!

tree-maps: 地図のWEB TOOLの事ならtree-mapsにお任せ!

地図に関するWEB TOOL専門サイトです!!

大画面で大量の緯度経度を一気にプロット、ジオコーディング、DMS<->DEGの相互変換等ができます!

◯ 広告

長いバージョン

mysql> create temporary table insert_tmp (i1 int, i2 int) engine=innodb charset=utf8mb4;
Query OK, 0 rows affected (0.01 sec)

mysql> insert into insert_tmp select * from group_sort group by i1 desc, i2 desc;
Query OK, 6 rows affected (0.00 sec)
Records: 6  Duplicates: 0  Warnings: 0

mysql> select * from insert_tmp;
+------+------+
| i1   | i2   |
+------+------+
|    3 |    7 |
|    3 |    3 |
|    2 |    8 |
|    2 |    2 |
|    1 |    9 |
|    1 |    1 |
+------+------+
6 rows in set (0.00 sec)

mysql> show create table insert_tmp \G
*************************** 1. row ***************************
       Table: insert_tmp
Create Table: CREATE TEMPORARY TABLE `insert_tmp` (
  `i1` int(11) DEFAULT NULL,
  `i2` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
1 row in set (0.00 sec)

短いバージョン

mysql> create temporary table insert_tmp select * from group_sort group by i1 desc, i2 desc;
Query OK, 6 rows affected (0.01 sec)
Records: 6  Duplicates: 0  Warnings: 0

mysql> select * from insert_tmp;
+------+------+
| i1   | i2   |
+------+------+
|    3 |    7 |
|    3 |    3 |
|    2 |    8 |
|    2 |    2 |
|    1 |    9 |
|    1 |    1 |
+------+------+
6 rows in set (0.00 sec)

mysql> show create table insert_tmp \G
*************************** 1. row ***************************
       Table: insert_tmp
Create Table: CREATE TEMPORARY TABLE `insert_tmp` (
  `i1` int(11) DEFAULT NULL,
  `i2` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4
1 row in set (0.00 sec)

ほら、全く同じ結果になりましたね!

treeおすすめの書籍です!
【送料無料】実践ハイパフォ-マンスMySQL第2版

【送料無料】実践ハイパフォ-マンスMySQL第2版
価格:4,830円(税込、送料別)

【送料無料】エキスパ-トのためのMySQL運用+管理トラブルシュ-ティングガイド

【送料無料】エキスパ-トのためのMySQL運用+管理トラブルシュ-ティングガイド
価格:3,465円(税込、送料別)

【送料無料】基礎からのMySQL改訂版

【送料無料】基礎からのMySQL改訂版
価格:3,129円(税込、送料別)

◯ 広告