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

SQL Server执行REPLACE INTO查询报错,求排查错误及正确用法

问题原因

SQL Server 不支持REPLACE INTO语法,这个写法是MySQL等其他数据库的特性,所以执行时会触发语法错误。

解决方案

你可以用以下两种SQL Server原生支持的方式实现“存在则更新,不存在则插入”的逻辑:

方法1:使用MERGE语句(推荐,标准语法)

MERGE是SQL Server专门用于这类“UPSERT”(更新或插入)操作的语句,示例代码如下:

MERGE [wine].[Spirits] AS target
USING (VALUES ('1', '1a', '2b', 'd', '12.00')) AS source (skuId, name, packageDescription, packageValue, price)
ON target.skuId = source.skuId
WHEN MATCHED THEN
    UPDATE SET 
        name = source.name,
        packageDescription = source.packageDescription,
        packageValue = source.packageValue,
        price = source.price
WHEN NOT MATCHED THEN
    INSERT (skuId, name, packageDescription, packageValue, price)
    VALUES (source.skuId, source.name, source.packageDescription, source.packageValue, source.price);

方法2:使用IF EXISTS判断(简单场景适用)

先检查记录是否存在,存在则执行更新,不存在则执行插入:

IF EXISTS (SELECT 1 FROM [wine].[Spirits] WHERE skuId = '1')
BEGIN
    UPDATE [wine].[Spirits]
    SET name = '1a', packageDescription = '2b', packageValue = 'd', price = '12.00'
    WHERE skuId = '1'
END
ELSE
BEGIN
    INSERT INTO [wine].[Spirits] (skuId, name, packageDescription, packageValue, price)
    VALUES ('1', '1a', '2b', 'd', '12.00')
END

注意:确保skuId列是主键或唯一约束,否则以上逻辑无法正确判断重复记录。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 09:25:24