Sql 更新查询是否覆盖表中具有相同值的记录?

Sql 更新查询是否覆盖表中具有相同值的记录?,sql,sql-server-2008-r2,Sql,Sql Server 2008 R2,如果现有值与更新时使用的值相同,更新查询是否更新/覆盖现有值 此问题与SQL Server 2008 R2有关。如果您没有将查询写入not to,则是。因此,考虑下面的查询: UPDATE a SET fa = 'hello' 这将更新字段fa,并将其设置为hello。但是,如果您写了以下内容: UPDATE a SET fa = 'hello' WHERE fa <> 'hello' UPDATE a SET fa='hello'其中fa'hello' 然后,只有当值不是he

如果现有值与更新时使用的值相同,
更新
查询是否更新/覆盖现有值


此问题与SQL Server 2008 R2有关。

如果您没有将查询写入not to,则是。因此,考虑下面的查询:

UPDATE a SET fa = 'hello'
这将更新字段
fa
,并将其设置为
hello
。但是,如果您写了以下内容:

UPDATE a SET fa = 'hello' WHERE fa <> 'hello'
UPDATE a SET fa='hello'其中fa'hello'
然后,只有当值不是
hello
时,它才会更新。现在,在更大的范围内,这通常被称为乐观并发。我只想更新行,如果该行是我第一次检索它时的状态


然而,这个问题总的来说有点奇怪。当然,它会覆盖该字段,但这并不重要,它是相同的值。

您使用的是哪种DBMS?神谕Postgres?@SurajSingh-
sql
是结构化查询语言。它绝对不意味着一个特定的DBMS。@SurajSingh:我看到了标记SQL,而这不是DBMS的标记。这是ANSI SQL问题的常规标记。如果您告诉SQL Server更新某些行,它将更新这些行。SQL Server本身不进行任何“匹配”。这取决于您-您可以控制
UPDATE
WHERE
子句。如果要避免更新某些行,请确保
WHERE
子句将它们排除在外。这在中有介绍,删除投票的目的是什么?哦,那反对票呢?我的意思是如果你不同意,请告诉我原因。