sql-server - 根据也正在更新的另一列的值更新列

标签 sql-server

我希望将 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/

相关文章:

sql - 将字符串转换为特定格式的日期

sql - 根据计数有条件地将记录插入多线程环境中的表中

mysql - 如何让 MS SQL 创建具有唯一 ID 的 View ?

sql-server - 可以将 SqlServer 配置为不执行以字符串形式提交的存储过程吗?

java - JOOQ store() 不返回 ResultSet

sql-server - 在 xml 变量上选择多行和多列

c# - 似乎无法将数据从 SQL Compact Edition 加载到 MVC 4 应用程序

.net - SQL Server数据通过网络发送时以什么格式序列化?

sql-server - 无法从 S3 恢复 SQL Server bak 文件,称文件太大

sql-server - 如何将 STUFF() 应用于逗号分隔