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


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

更新于:2019 年 7 月 30 日

4K+ 次浏览

职业生涯从头开始

完成课程并获得认证

开始学习
广告