You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用SELECT查询结果实现多值INSERT,避免显式使用自增ID?

你的预填充思路可行,但最后一段INSERT有语法问题

你的整体思路是对的:创建带自动生成ID的表,通过业务字段(比如A表的str)关联获取外键值,避免手动指定自增ID。但最后那段INSERT的写法有问题,不能直接把CTE的结果集found当作单个值放进VALUES里,会触发语法错误。

修正后的写法(以PostgreSQL为例)

方法1:用UNION ALL生成多行

WITH found AS (SELECT id FROM A WHERE str = 'b')
INSERT INTO B(a)
SELECT id FROM found
UNION ALL SELECT id FROM found
UNION ALL SELECT id FROM found;

方法2:用generate_series快速生成重复行(更简洁)

WITH found AS (SELECT id FROM A WHERE str = 'b')
INSERT INTO B(a)
SELECT id FROM found, generate_series(1, 3);

说明

  • 两种写法都能自动获取A表中str='b'对应的ID,批量插入3条到B表,全程不需要手动指定任何自增ID(A的id和B的id都会自动生成)
  • 如果是MySQL等不支持generate_series的数据库,用方法1即可

内容的提问来源于stack exchange,提问作者Dekakaruk

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 13:03:19