我有一个SQL Server表中有两列,我想根据发送到存储过程的标志和新值更新它们的任何值,例如:/ h/ _0 g0 a! Q" r, n
UPDATE table_NameSET CASE WHEN @flag = '1' THEN column_A = @new_value WHEN @flag = '0' THEN column_B = @new_value END AS TotalWHERE ID = @ID这样做是正确的SQL Server什么是代码? 4 |( Z* ]: O. q, J: H ! L& x t# l C% ^ 解决方案: 1 x& b) U8 v# S8 G0 T) x 目前的答案很好,应该可以,但是有什么问题更简单,更明显,更容易维护: # b& J$ H, U( p, K" w* M4 pIF @flag = 1 UPDATE table_name SET column_A = column_A @new_value WHERE ID = @ID;ELSE UPDATE table_name SET column_B = column_B @new_value WHERE ID = @ID;虽然这是一个非常简单的查询,但它更容易阅读。7 F8 u6 C8 t _/ `
这是@snyder工作示例:SqlFiddle。