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

时间:2019-03-04 15:09:45

标签: mysql sql sql-insert insert-into

假设我有一个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过滤器插入多行?

2 个答案:

答案 0 :(得分:1)

除去括号和where子句,您没有FROM子句,因此您的where不适用

INSERT INTO SomeTable
SELECT 1 
UNION
SELECT 2 

,或者如果您想在何处使用条件

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

答案 1 :(得分:0)

您的括号引起了问题。 :

INSERT INTO SomeTable (col)
     SELECT 1 
     FROM . . 
     WHERE . . .
     UNION
     SELECT 2 
     FROM SomeTable 
     WHERE . . . ;
相关问题