如何在没有单独的 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)
广告