从多个表中选择并将它们放在一个临时表中
问题描述:
我需要创建一个临时表并将来自多个表的数据放入其中。在这question他们都从一个表中选择。如何从多个表中选择? (所有表格都有完全相同的列)从多个表中选择并将它们放在一个临时表中
编辑:表没有关系,它们是9个表,但它们都有相同的列,如id,用户名,密码。每个表都包含有关特定用户的信息。
答
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]])
答
尝试使用连接和联合。因为你想临时表别名会做。 对于连接,查询会像:
Select column_names from table1 join table2 on column_names
如果你有2个以上的表,你可以用链的加入得到的结果。
答
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” 按照新表的新列名。
表格之间的关系是什么? –
@TimBiegeleisen他们没有任何关系。 –
那么我在这里看到的唯一选择就是将表联合在一起,但这只有在它们具有相同的定义时才有意义。 –