我有以下数据:
表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行
答案 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'