如何在没有单独的CREATE TABLE的SELECT语句中创建临时MySQL表?

要在SELECT语句中创建临时表,我们使用TEMPORARY关键字。

该临时表对于当前会话是可见的,并且每当会话关闭时,该表都会被自动销毁。两个会话可以使用同一个临时表。

创建一个表。

mysql> create table MyTableDemo
   -> (
   -> id int,
   -> Name varchar(100)
   -> );

插入一些记录。

mysql> insert into MyTableDemo values(1,'John');

mysql>  insert into MyTableDemo values(2,'Carol');

mysql>  insert into MyTableDemo values(3,'Bob');

显示所有记录。

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);
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)