带联合的MYSQl查询失败

时间:2011-04-20 10:37:03

标签: mysql union

我有两张桌子A和B. 我想把他们联合起来并存入另一张桌子;

CREATE TABLE  myspace.test (
(select * from A ) UNION ( select * from B) );

失败并显示错误

  

您的SQL语法有错误;   检查对应的手册   您的MySQL服务器版本   正确的语法在'CREATE TABLE附近使用   myspace.test((从A中选择*)   UNION(s'在第1行

但是使用:(select * from A ) UNION ( select * from B)的查询会得到正确的结果。

如何将union结果存储到另一个表中?

谢谢阿曼。

修改

好了玩完后我发现:

  • 没有外括号的查询有效。

    CREATE TABLE myspace.test (从A中选择*)UNION(从B中选择*);

  • 添加 AS 无法解决问题。

  • 我想知道带括号的查询是否运行良好似乎是BUG或者我错过了什么?

    CREATE TABLE myspace.test (从A中选择*);

3 个答案:

答案 0 :(得分:4)

CREATE TABLE
        myspace.test
AS
SELECT  *
FROM    A
UNION
SELECT  *
FROM    B

答案 1 :(得分:2)

阅读documentationselect-statement周围没有任何问题。

CREATE TABLE `myspace`.`test` (SELECT * FROM `A`) UNION (SELECT * FROM `B`);

请注意重复的主键。您可能需要考虑首先使用正确的布局创建一个空表myspace.test,然后更有选择性地将行插入其中。

答案 2 :(得分:0)

这看起来并不正确。

首先使用CREATE TABLE创建新的空表。

然后运行一个查询来填充它,应该是

INSERT INTO newTable(field1, field2,..., fieldN)
SELECT temp.field1, temp.field2,...,temp.fieldN
FROM
(
    SELECT field1, field2,...,fieldN
    FROM A
    UNION
    SELECT field1, field2,...,fieldN
    FROM B
) temp

希望这有帮助!