【问题标题】:If new value and old value is same dont update else update [duplicate]如果新值和旧值相同,则不要更新,否则更新[重复]
【发布时间】:2015-11-05 05:05:53
【问题描述】:

如何检测并仅在新旧值不同时才更新,否则不更新

Update Student
SET First = @FirstName
WHERE EmpId = 1

【问题讨论】:

    标签: sql sql-server sql-update


    【解决方案1】:

    您可以将此条件添加到您的 where 子句中:

    UPDATE Student
    SET    First = @FirstName
    WHERE  First != @FirstName AND EmpId = 1
    

    编辑:
    正如 Kevin Suchlicki 在 cmets 中指出的那样,如果 First 可以为空,则应明确处理 nulls:

    UPDATE Student
    SET    First = @FirstName
    WHERE  EmpId = 1 AND ((First != @FirstName) OR
                          (First IS NULL AND @FirstName IS NOT NULL) OR
                          (First IS NOT NULL AND @FirstName IS NULL))
    

    【讨论】:

    • 注意现有数据和新数据中的空值,因为 NULL != 'John' 的计算结果为 FALSE,从而阻止了您想要的更新
    • @KevinSuchlicki 好点,谢谢!将其编辑到我的答案中。
    • 更新学生 SET FirstName = FirstName WHERE EmpId = 1
    • 如何在没有参数的情况下检查值是否来自另一个外部表
    • 更新学生 SET FirstName = FirstName FROM ExtStudent
    猜你喜欢
    • 2017-04-14
    • 1970-01-01
    • 2021-04-29
    • 2012-10-29
    • 1970-01-01
    • 2023-03-30
    • 1970-01-01
    • 2015-07-04
    • 2011-10-04
    相关资源
    最近更新 更多