INSERT嵌套子查询返回多行报错,如何批量插入带固定常量的多行列
解决方法
你当前的报错是因为VALUES子句中嵌套的子查询属于标量子查询,SQL语法强制要求这类子查询最多只能返回1行结果,一旦返回多行就会触发你遇到的报错。
要实现子查询返回多少行就插入多少行、同时固定其他字段值的需求,直接改用INSERT INTO ... SELECT语法即可,不需要搭配VALUES关键字,把固定常量直接写到SELECT的字段列表中就行:
INSERT INTO tab3(a,b,c,d,e) SELECT 1, tab2.a, 'somting1', 'somting2', 'somting3' FROM tab2 LEFT JOIN tab1 ON tab1.a = tab2.a WHERE tab2.b = 'x';
说明
- 这条语句会直接将
tab2和tab1关联查询出的所有符合tab2.b='x'的结果插入tab3,每行的a、c、d、e字段都会固定使用你设置的常量值 - 如果查询结果为空,不会插入任何数据,和你原有写法的默认行为一致
内容的提问来源于stack exchange,提问作者Eran Erocam
相关产品推荐
相关产品推荐

