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

无标识列TSQL表插入数据失败求助:预期插入2条记录

问题分析与解决办法

原语句无效的核心原因:

  • 使用JOIN Connect_Onprem.dbo.med_specialty会仅返回两边都存在的ID,而你需要的是Powerpath中存在但Connect中没有的新记录,这直接排除了目标数据。
  • 最后的ms.id = (SELECT MAX(id)+1...)逻辑完全错误:子查询中ms1.id = ms.id限定了只查询当前ms的ID,MAX(id)就是ms.id本身,加1后不可能等于ms.id,这会过滤掉所有记录。

正确的插入语句(两种可选)

方法1:用NOT EXISTS筛选不存在的记录

INSERT INTO Connect_Onprem.dbo.med_specialty(id, code, name, active)
SELECT 
    ms.id,
    ms.code,
    ms.name,
    ms.active
FROM Powerpath_Dev.dbo.med_specialty ms  
WHERE ms.active = 'Y'
AND NOT EXISTS (
    SELECT 1 
    FROM Connect_Onprem.dbo.med_specialty cms  
    WHERE cms.id = ms.id
)

方法2:用LEFT JOIN筛选未匹配的记录

INSERT INTO Connect_Onprem.dbo.med_specialty(id, code, name, active)
SELECT 
    ms.id,
    ms.code,
    ms.name,
    ms.active
FROM Powerpath_Dev.dbo.med_specialty ms  
LEFT JOIN Connect_Onprem.dbo.med_specialty cms  
    ON ms.id = cms.id
WHERE ms.active = 'Y'
AND cms.id IS NULL

这两种写法都会找出Powerpath中active='Y'且Connect里不存在的记录,正好匹配你要插入2条(ID56、57)的需求,无需游标,执行效率也更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 03:07:03