我希望将 A 列更新为 null。我还希望将 B 列更新为 null,但前提是它的值与 A 列的原始值匹配。
Update MyTable
Set A=Null,
B=Case When B=A Then Null Else B End
上面的说法行得通吗? Case 语句中 A 的值在求值时是否已经为 Null?更新的顺序重要吗?
有什么方法可以更好地编写这个并避免在不需要时设置 B=B ?我需要在 1 个语句内完成此操作,因为实际查询很长且复杂,涉及许多联接和子查询。
最佳答案
如果您像这样将 B 放在 A 之前,那么您的查询应该没问题,因为顺序很重要。它也可能像你写的那样工作,但我对此表示怀疑。
UPDATE MyTable
SET B = CASE WHEN A = B then null else B END,
A = NULL
关于sql-server - 根据也正在更新的另一列的值更新列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35912377/