MySQL多表插入语法报错求助:INSERT...SELECT语句问题
解决批量插入的语法错误问题
你遇到的问题是因为使用了错误的INSERT语法——当需要通过子查询批量插入多条数据时,不需要用VALUES()来包裹子查询,直接使用INSERT ... SELECT的结构就可以了。
正确的SQL语句
INSERT INTO table2 (`member_id`) SELECT `member_id` FROM table1 WHERE common_criteria = 'some';
为什么原来的语句出错?
VALUES()语法是用来插入单条或多条明确指定的值(比如VALUES(1000), (100), (200)),而当数据源是子查询时,直接把SELECT语句放在INSERT的目标列后面即可,不需要额外的VALUES()包裹,否则数据库会把整个子查询当成一个单一的值来处理,从而触发语法错误。
验证结果
执行这条语句后,table2会得到你预期的结果:
id member_id
1 1000
2 100
3 200
因为table2的id是自增主键,数据库会自动为每条插入的记录生成对应的自增ID,正好匹配你的预期输出。
内容的提问来源于stack exchange,提问作者MTK
相关产品推荐
相关产品推荐

