回答

收藏

SQL Server更新查询中的if条件

技术问答 技术问答 575 人阅读 | 0 人回复 | 2023-09-14

我有一个SQL Server表中有两列,我想根据发送到存储过程的标志和新值更新它们的任何值,例如:( K8 E9 q5 W6 n/ J6 z' E! `% T
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什么是代码?
5 O2 R" }$ v+ C& S! E7 W! ^                                                               
+ w8 u: i8 {- L- m+ V% \    解决方案:                                                                ( ?% \3 W  S  c3 P, r
                                                                目前的答案很好,应该可以,但是有什么问题更简单,更明显,更容易维护:7 R& n1 @* I5 j- m) p, [
IF @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;虽然这是一个非常简单的查询,但它更容易阅读。* j1 `: h' d) _% }5 l: M' H6 {0 D8 ~, `
这是@snyder工作示例:SqlFiddle。
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则