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

SQL查询为每行数据生成对应单条INSERT语句的实现方案

问题根因

你写的CONCAT逻辑里把三行数据的值全部硬编码写死了,完全没有引用当前遍历行的字段,所以每一行返回的拼接结果都是一模一样的全量插入语句,自然达不到逐行生成对应INSERT的效果。

正确写法

直接在拼接时引用当前行的各字段值即可,字符串类型的Name字段记得加单引号包裹,数值类字段直接拼接:

SELECT 
    *,
    CONCAT(
        'INSERT INTO workerTab(Id,Name,Age,Cityid) VALUES(',
        Id,
        ', ''',
        Name,
        ''', ',
        Age,
        ', ',
        Cityid,
        ')'
    ) AS Build
FROM workerTab
WHERE cityid = 5
运行结果

执行后返回的结果完全匹配预期:

IdNameAgeCityidBuild
1John225INSERT INTO workerTab(Id,Name,Age,Cityid) VALUES(1, 'John', 22, 5)
2Adam345INSERT INTO workerTab(Id,Name,Age,Cityid) VALUES(2, 'Adam', 34, 5)
3Eve195INSERT INTO workerTab(Id,Name,Age,Cityid) VALUES(3, 'Eve', 19, 5)
补充说明
  • 如果Name字段里本身包含单引号,要提前做转义,比如在MySQL环境可以把拼接逻辑里的Name替换成REPLACE(Name, '''', ''''''),把字段值里的单引号替换成两个单引号,避免生成的INSERT语句报语法错误。
  • 这种动态引用字段的写法不需要硬编码固定值,后续表数据更新、查询条件变化时都能自动生成对应行的正确语句,通用性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 13:57:12