使用WHERE子句检查相同字段来更新表字段是否安全?

Use*_*ser 2 sql

我有这样的想法:

UPDATE [MyTable]
SET [SomeField] = 1
WHERE [SomeField] is NULL
Run Code Online (Sandbox Code Playgroud)

它会工作还是像在迭代时修改集合一样?

或者写一些这样的东西?

UPDATE [MyTable]
SET [SomeField] = 1
WHERE [ID] IN (SELECT [ID]
               FROM [MyTable]
               WHERE [SomeField] is NULL)
Run Code Online (Sandbox Code Playgroud)

Ala*_*sen 8

是.更新操作仅在与WHERE子句匹配的表行上发生.

想一想,因为WHERE子句正在选择行,后面跟着SET子句更新那些选定的行.