mysql multiple Insert从另一个表中选择多个列

时间:2018-04-17 13:37:18

标签: mysql sql

我有以下数据:

表1:

id  common_criteria        member_id
1       some                 1000
2       some1                 500
3       some                  100
4       some                  200
3       some1                2000

表2

id member_id

两个表的id列都是AUTOINCREMENT PRIMARY KEY

我需要插入table2三个新行(在本例中)来自common_criteria ='some'的table1

table2的预期结果:

id    member_id
1       1000
2       100
3       200

我试过了:

INSERT into table2 (`member_id`) 
VALUES (
 SELECT `member_id` FROM table1 WHERE common_criteria = 'some'
)

但是我收到语法错误:

  

#1064 - 您的SQL语法出错;检查与MySQL服务器版本对应的手册,以获得正确的语法   'SELECT member_id FROM table1附近WHERE common_criteria ='some')'   在第1行

2 个答案:

答案 0 :(得分:1)

当您想从SELECT获取结果时,您不应该需要VALUES部分。相反,你可以简化它:

INSERT into table2 (`member_id`) 
   SELECT `member_id`
   FROM table1 
   WHERE common_criteria = 'some'

它将插入SELECT返回的所有行。

附加说明(因为人们经常会问这个):如果你有一个场景,其中一些值每次都是静态的,那么你可以很容易地做到这一点:

INSERT into table2 (`member_id`, `some_other_field`) 
   SELECT `member_id`, 'Static Text' 
   FROM table1 
   WHERE common_criteria = 'some'

在这种情况下"静态文本"每次都会插入每一行,无论SELECT返回多少行(并插入)。

答案 1 :(得分:1)

你可以这样做:

INSERT INTO table2 (`member_id`) 
SELECT `member_id` FROM table1 WHERE common_criteria = 'some'