我需要创建一个临时表并将多个表中的数据放入其中。在这个question中,他们都从一个表中选择。如何从多个表中进行选择? (所有表格都有完全相同的列)
编辑:表没有关系,它们是9个表,但它们都有相同的列,如id,username,password。每个表都包含有关特定用户的信息。
答案 0 :(得分:1)
Union可以帮助您将这两个表合并,然后您可以使用TEMPORARY
方法!
CREATE TEMPORARY TABLE IF NOT EXISTS tableTemp AS (SELECT * FROM table1 UNION SELECT * FROM table2)
这会导致两个表中的数据“统一”到一个表中。
所以有两个这样的表:
<强>表1 强>
testCol | testCol2
--------+---------
A | 1
<强>表2 强>
testCol | testCol2
--------+---------
B | 2
上面的代码将返回
<强> tableTemp 强>
testCol | testCol2
--------+---------
A | 1
B | 2
希望它有所帮助!
修改强>
为了清楚起见,上面的代码只是一个例子!您需要更改变量名称:
CREATE TEMPORARY TABLE IF NOT EXISTS tableTemp AS (SELECT * FROM [[NAME OF FIRST TABLE]] UNION SELECT * FROM [[NAME OF SECOND TABLE]])
由于您说您有9个表,因此您只需要为每个表附加一个UNION SELECT。 例如:
CREATE TEMPORARY TABLE IF NOT EXISTS tableTemp AS (SELECT * FROM [[NAME OF FIRST TABLE]] UNION SELECT * FROM [[NAME OF SECOND TABLE]] UNION SELECT * FROM [[NAME OF THIRD TABLE]] UNION SELECT * FROM [[NAME OF FOURTH TABLE]] UNION SELECT * FROM [[NAME OF FIFTH TABLE]] UNION SELECT * FROM [[NAME OF SIXTH TABLE]] UNION SELECT * FROM [[NAME OF SEVENTH TABLE]] UNION SELECT * FROM [[NAME OF EIGTH TABLE]] UNION SELECT * FROM [[NAME OF NINTH TABLE]])
答案 1 :(得分:0)
尝试使用联接和联合。而且因为你想要临时表别名。 对于join,查询将如下:
Select column_names from table1 join table2 on column_names
如果您有超过2个表,则可以使用连接链来获得结果。
答案 2 :(得分:0)
CREATE TABLE IF NOT EXISTS table_3 AS SELECT 1st_table_id as union_id, 1st_table_username as union_username, 1st_table_password as union_password FROM table_1 UNION SELECT 2nd_table_id as union_id, 2nd_table_username as union_username, 2nd_table_password as union_password FROM table_2
根据新表的新列名更改“union_id”,“union_username”和“union_password”。
答案 3 :(得分:0)
这有点晚了,但是这里接受的答案中的代码会导致语法错误。
正如this answer中指出的那样,您不能直接从联合创建表(或临时表)。不过,您可以将并集粘贴在子查询中,如下所示:
CREATE TEMPORARY TABLE IF NOT EXISTS tableTemp AS (
SELECT *
FROM (
SELECT * FROM table1
UNION
SELECT * FROM table2
)
)