我有两张桌子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中选择*);
答案 0 :(得分:4)
CREATE TABLE
myspace.test
AS
SELECT *
FROM A
UNION
SELECT *
FROM B
答案 1 :(得分:2)
阅读documentation。 select-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
希望这有帮助!