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

如何将table_1的数据转置插入到已创建的table_2中?

解决方案

你需要将table_1的行数据转成列结构后插入table_2,不需要动态生成单条插入语句,而是通过条件聚合行转列后一次性插入所有行:

INSERT INTO table_2 (id, name, address, state)
SELECT 
    id,
    -- 匹配path为name的curr_value,无则返回null
    MAX(CASE WHEN path = 'name' THEN curr_value END) AS name,
    -- 匹配path为address的curr_value,无则返回null
    MAX(CASE WHEN path = 'address' THEN curr_value END) AS address,
    -- state列无对应数据,直接设为null
    NULL AS state
FROM table_1
GROUP BY id;

说明

  1. GROUP BY id:按table_1的id分组,确保每个id对应table_2的一行数据
  2. CASE WHEN + MAX:每个分组内,针对指定path提取对应curr_value,没有匹配的path时自动返回null;用MAX是因为每个id在同一个path下只有一条数据,聚合后会保留有效值
  3. 直接插入:转列后的结果集直接插入table_2,完全匹配目标表的结构

你之前的写法错误在于生成了多条仅插入单列的语句,这会导致table_2的每行只有单个字段有值,且无法对应正确的id关联。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 10:39:52