首页 > 解决方案 > 如果不为 NULL,则不要更新列

问题描述

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

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

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

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

标签: mysqlsql

解决方案


您可以使用COALESCE()

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

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


推荐阅读