带有SELECT UNION的MySQL INSERT会出现语法错误

问题描述 投票:0回答:2

假设我有一张桌子SomeTable与一个INT列。

此查询工作正常:

INSERT INTO SomeTable
(SELECT 1 WHERE true) 
UNION
(SELECT 2 FROM SomeTable WHERE true) 

enter image description here

但这会产生语法错误:

INSERT INTO SomeTable
(SELECT 1 WHERE true) 
UNION
(SELECT 2 WHERE true) 

错误代码:1064。您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在第4行使用“WHERE true”附近的正确语法

错误的原因是什么?

我怎么用WHERE过滤器插入多行?

mysql sql sql-insert insert-into
2个回答
1
投票

删除括号和where子句,而不是FROM子句,因此您的位置不适用

INSERT INTO SomeTable
SELECT 1 
UNION
SELECT 2 

或者如果你想要一个where条件你可以使用dual

SELECT 1 from dual WHERE true
union 
SELECT 2 from  dual  WHERE true

0
投票

括号会导致问题。 :

INSERT INTO SomeTable (col)
     SELECT 1 
     FROM . . 
     WHERE . . .
     UNION
     SELECT 2 
     FROM SomeTable 
     WHERE . . . ;
© www.soinside.com 2019 - 2024. All rights reserved.