我有这样的想法:
UPDATE [MyTable]
SET [SomeField] = 1
WHERE [SomeField] is NULL
它是否有效或者是否在迭代时修改集合?
或者写这样的东西?
UPDATE [MyTable]
SET [SomeField] = 1
WHERE [ID] IN (SELECT [ID]
FROM [MyTable]
WHERE [SomeField] is NULL)
答案 0 :(得分:8)
是。更新操作仅发生在与WHERE子句匹配的表行上。
考虑一下WHERE子句选择行后跟SET子句更新那些选定的行。
答案 1 :(得分:4)
要明确你只需要做
UPDATE [MyTable]
SET [SomeField] = 1
WHERE [SomeField] is NULL
因为where子句仅用于减少应用更新的范围。
听起来您正在从开发背景进入SQL,因此您可能会觉得有用的一条建议是在事务中尝试您的操作。这样你就可以撤消你所犯的任何错误并改进你正在处理的sql。
利用此次运行
BEGIN TRAN
在执行要测试的命令之前
ROLLBACK TRAN
撤消它,或
COMMIT TRAN
使其永久