繁体   English   中英

MySQL多插入从另一个表中选择多列

[英]mysql multiple Insert where select many column from another table

我有以下数据:

表格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插入三个新行(在这种情况下),其中table1中的common_criteria ='some'

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语法有误; 在第1行的“ SELECT member_id FROM table1 WHERE common_criteria ='some')'附近,查看与您的MySQL服务器版本相对应的手册以获取正确的语法。

要从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而返回(插入)多少行,每次都会在每行中插入“静态文本”。

您可以这样做:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM