如何使用多个视图创建临时表

时间:2019-06-25 17:30:47

标签: mysql sql

我正在尝试使用五个不同的视图创建一个临时表,每个视图具有相同的列名但值不同。

我正在使用MySQL5。到目前为止,我已经尝试运行以下命令:

CREATE TEMPORARY TABLE `temp`
SELECT *
FROM `first_view`, `second_view`, `third_view`, `fourth_view`, `fifth_view`

但是随后我收到一条错误消息,告诉我列Name是重复的。更改为:

CREATE TEMPORARY TABLE `temp`
SELECT `first_view`.Name AS Test
FROM `first_view`, `second_view`, `third_view`, `fourth_view`, `fifth_view`

只需使用Name列创建一个临时表即可,

为简要说明我的意思,以下是视图的结构:

View `first_view`:
---------------------
|   Name  |    Qty  |
---------------------
|  data1  |    494  |
---------------------

View `second_view`:
---------------------
|   Name  |    Qty  |
---------------------
|  data2  |    78   |
---------------------


View `third_view`:
---------------------
|   Name  |    Qty  |
---------------------
|  data3  |    12   |
---------------------


View `fourth_view`:
---------------------
|   Name  |    Qty  |
---------------------
|  data4  |    752  |
---------------------

View `fifth_view`:
---------------------
|   Name  |    Qty  |
---------------------
|  data5  |    909  |
---------------------

我要实现的是具有以下结构的临时表:

Temporary table `temp`:
---------------------
|   Name  |    Qty  |
---------------------
|  data1  |    494  |
|  data2  |     78  |
|  data3  |     12  |
|  data4  |    752  |
|  data5  |    909  |
---------------------

有没有办法做到这一点?如果是这样,SQL语句应如何执行此操作?

2 个答案:

答案 0 :(得分:4)

请尝试以下操作,因为所有视图的列数均相同

CREATE TEMPORARY TABLE `temp`
SELECT * FROM `first_view` UNION ALL
SELECT * FROM `second_view` UNION ALL 
SELECT * FROM `third_view` UNION ALL
SELECT * FROM `fourth_view` UNION ALL
SELECT * FROM `fifth_view`

答案 1 :(得分:0)

UNION可以帮助您将所有表数据合并为一个表。
喜欢:

CREATE TEMPORARY TABLE IF NOT EXISTS tableTemp AS (SELECT * FROM table1 UNION SELECT * FROM table2)