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

如何将临时表数据回填至源表?基于INSERT OUTPUT的SQL问题

实现INSERT+OUTPUT后的数据回填操作

你当前的UPDATE思路存在逻辑问题:

  • WHERE子句中source_table.eggs IN (...)完全不成立,因为要更新的source_table.eggs原本就是NULL,而子查询返回的是@temp里的非NULL值
  • SET部分没有正确关联到@temp中对应的eggs值

以下是两种正确的实现方式:

方式1:使用JOIN(推荐,大数据量下效率更高)

通过表关联直接匹配对应行,赋值逻辑清晰:

UPDATE st
SET st.eggs = t.eggs
FROM source_table st
INNER JOIN @temp t 
    ON st.id = t.spam
WHERE st.eggs IS NULL -- 可选:确保只更新之前被筛选出的eggs为NULL的行,避免误改其他数据

方式2:使用相关子查询赋值

如果更倾向子查询写法,可通过EXISTS锁定需要更新的行,同时在SET中用子查询获取对应值:

UPDATE source_table
SET eggs = (SELECT t.eggs FROM @temp t WHERE t.spam = source_table.id)
WHERE EXISTS (
    SELECT 1 FROM @temp t 
    WHERE t.spam = source_table.id
)

逻辑说明

两种写法均实现:将@temp中spam字段(对应source_table的id)匹配的eggs值,回填到source_table的对应行中。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 10:54:54