在WHERE子句中具有限制的T-SQL更新

时间:2014-03-21 08:25:23

标签: sql tsql

已解决此问题

这样做:

UPDATE myTable
  SET
    URL = 
       ( CASE 
            WHEN (URL <> 'new domain' THEN 'new domain'
            ELSE URL
         END
       )
  WHERE
    NAME = 'any name'

早上好,

我有一个UPDATE查询,但有一点问题。 查询应更新现有的URL列。 但是...... WHERE子句有两个相互建立的限制。

首先,主要限制是NAME列。此列是唯一的。 现在我想检查数据库中的URL是否等于新URL。 只有在存在差异时我才想要替换它。

UPDATE myTable
  SET
    URL = 'new domain'
  WHERE
    NAME = 'any name' AND
    URL <> 'new domain'

此UPDATE查询将查找名称,但也会查找与此模式不匹配的每个域。 不是我想要的。

1 个答案:

答案 0 :(得分:0)

如果只想在真正发生更改时进行更新,则SET子句中URL的值应与WHERE子句中的值相同。在你的例子中,他们是不同的。