【问题标题】:Do not UPDATE column if it is not NULL [duplicate]如果它不为 NULL,请不要更新列 [重复]
【发布时间】:2020-11-01 12:30:58
【问题描述】:

我在准备好的语句中有以下 SQL 查询:

UPDATE users SET name = ?, city = ?, country = ?, status = ? WHERE id = ?

表中的某些城市和国家/地区值为 null,而另一些则不是。我希望上述查询更新名称和状态;但如果城市和国家不为空,则不要更新城市和国家。一个查询可以吗?

我有一个选择是在此之前进行另一个查询,并检查该用户的城市和国家值是否为空,但如果可能的话,我想将其保留在一个查询中。

【问题讨论】:

    标签: mysql sql


    【解决方案1】:

    你可以使用COALESCE():

    UPDATE users
        SET name = ?,
            city = COALESCE(city, ?),
            country = COALESCE(country, ?),
            status = ?
        WHERE id = ?;
    

    这将在citycountry 中保留非NULL 值。其他列将被更新。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-06-07
      • 1970-01-01
      • 1970-01-01
      • 2023-04-01
      • 2012-10-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多