【发布时间】:2015-02-06 20:30:52
【问题描述】:
我有以下 UPDATE 语句
UPDATE PAYMENT_HISTORY
SET request_status_id =
CASE
WHEN PHP.request_status_id = PHP.prevRequest_status_id THEN NULL
ELSE PHP.request_status_id
END,
is_changed =
CASE
WHEN PHP.request_status_id = PHP.prevRequest_status_id THEN 0
ELSE 1
END
是否可以使用单个 case 语句更新两列?
【问题讨论】:
-
我认为您需要多次复制粘贴 case-when 子句
-
问题只是别名PHP?如果你把它排除在外,它会起作用吗?
-
@JamesZ 我不需要那些别名...那里有一些潜在的联接
-
如果您遗漏了 SQL 的重要部分,您将很难为您提供帮助
-
您想避免一遍又一遍地重复相同的情况吗?不,一般不会。你真的只是想更新几行吗?
WHERE PHP.request_status_id <> PHP.prevRequest_status_id。 (我知道这并不能完全处理你的null。)
标签: sql sql-server tsql case-when