MySQL 如何在没有单独CREATE TABLE的情况下在SELECT语句中创建临时表
要在SELECT语句中创建一个临时表,我们使用TEMPORARY关键字。
这个临时表将为当前会话可见,每当会话关闭时,它就会自动销毁。两个会话可以使用相同的临时表。
创建一张表。
mysql> create table MyTableDemo
-> (
-> id int,
-> Name varchar(100)
-> );
Query OK, 0 rows affected (0.69 sec)
插入一些记录。
mysql> insert into MyTableDemo values(1,'John');
Query OK, 1 row affected (0.18 sec)
mysql> insert into MyTableDemo values(2,'Carol');
Query OK, 1 row affected (0.13 sec)
mysql> insert into MyTableDemo values(3,'Bob');
Query OK, 1 row affected (0.12 sec)
显示所有记录。
mysql> select *from MyTemporaryTableDemo;
以下是输出。
+------+-------+
| id | Name |
+------+-------+
| 1 | John |
| 2 | Carol |
| 3 | Bob |
+------+-------+
3 rows in set (0.00 sec)
创建临时表的语法。
CREATE TEMPORARY TABLE IF NOT EXISTS yourTemporaryTableName AS (SELECT * FROM yourTableName);
现在在以下查询中实现以上语法。
mysql> CREATE TEMPORARY TABLE IF NOT EXISTS MyTemporaryTableDemo AS (SELECT * FROM MyTableDemo);
Query OK, 3 rows affected (0.01 sec)
Records: 3 Duplicates: 0 Warnings: 0
检查是否成功复制了所有记录。
mysql> select *from MyTemporaryTableDemo;
以下是输出。
+------+-------+
| id | Name |
+------+-------+
| 1 | John |
| 2 | Carol |
| 3 | Bob |
+------+-------+
3 rows in set (0.00 sec)
阅读更多:MySQL 教程
极客教程