从多个表中选择并将它们放在临时表中

时间:2017-07-18 05:03:44

标签: mysql

我需要创建一个临时表并将多个表中的数据放入其中。在这个question中,他们都从一个表中选择。如何从多个表中进行选择? (所有表格都有完全相同的列)

编辑:表没有关系,它们是9个表,但它们都有相同的列,如id,username,password。每个表都包含有关特定用户的信息。

4 个答案:

答案 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个表,则可以使用连接链来获得结果。

查看此链接  https://www.google.co.in/url?sa=t&source=web&rct=j&url=https://www.w3schools.com/sql/sql_join.asp&ved=0ahUKEwim456hiJLVAhUIVbwKHQ9SBzwQFggeMAA&usg=AFQjCNH2uk_VTd4skktAbnIq3dv1MlKD-g

答案 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
    )
)