我正在尝试使用五个不同的视图创建一个临时表,每个视图具有相同的列名但值不同。
我正在使用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语句应如何执行此操作?
答案 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)