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

mysqlmysqli database

要在 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)

相关文章