【问题标题】:Is it possible to update multiple columns using different criteria in one statement?是否可以在一个语句中使用不同的条件更新多个列?
【发布时间】:2019-03-22 00:14:26
【问题描述】:

如果它们是负数,我需要将所有列设置为 0。目前我一次只做一列:

UPDATE #ListingRank SET Distance = 0 WHERE Distance < 0
UPDATE #ListingRank SET ActionDays = 0 WHERE ActionDays < 0
UPDATE #ListingRank SET Price = 0 WHERE Price < 0
UPDATE #ListingRank SET Beds = 0 WHERE Beds < 0
UPDATE #ListingRank SET Baths = 0 WHERE Baths < 0
UPDATE #ListingRank SET SqFt = 0 WHERE SqFt < 0

是否可以在单个语句中执行相同的操作?

【问题讨论】:

    标签: sql sql-server tsql sql-server-2017


    【解决方案1】:

    你可以尝试使用CASE WHEN

    UPDATE #ListingRank
    SET Distance = (CASE WHEN Distance < 0 THEN 0 ELSE Distance END),
        ActionDays = (CASE WHEN ActionDays < 0 THEN 0 ELSE ActionDays END),
        Price = (CASE WHEN Price < 0 THEN 0 ELSE Price END),
        Beds = (CASE WHEN Beds < 0 THEN 0 ELSE Beds END),
        Baths = (CASE WHEN Baths < 0 THEN 0 ELSE Baths END),
        SqFt = (CASE WHEN SqFt < 0 THEN 0 ELSE SqFt END)
    

    【讨论】:

    • 建议添加WHERE Distance &lt; 0 OR ActionDays &lt; 0 ... 以减少负载。
    猜你喜欢
    • 2017-12-02
    • 2010-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-06
    • 2018-09-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多