mysql - 如果不为 NULL,则不要更新列
问题描述
我在准备好的语句中有以下 SQL 查询:
UPDATE users SET name = ?, city = ?, country = ?, status = ? WHERE id = ?
表中的一些城市和国家值是空的,而另一些不是。我希望上述查询更新名称和状态;但如果城市和国家不为空,则不要更新城市和国家。一个查询可以吗?
我有一个选择是在此之前进行另一个查询,并检查该用户的城市和国家值是否为空,但如果可能的话,我想将其保留在一个查询中。
解决方案
您可以使用COALESCE()
:
UPDATE users
SET name = ?,
city = COALESCE(city, ?),
country = COALESCE(country, ?),
status = ?
WHERE id = ?;
这将在和中保留非NULL
值。其他列将被更新。city
country
推荐阅读
- sas - 如何通过 SAS 中另一个表中没有的内容来过滤表?
- ajax - 当我从我的网站向自身进行一些 Ajax 轮询时,Firefox 警告有关 sameSite Cookie
- javascript - 嵌套 JavaScript 获取
- python - 散景:如何使 CDSView 正确使用矢量化颜色?
- javascript - 我想在运行时使用 JavaScript 或 TypeScript 将 Html 标记中的 Angular 指令设置为属性
- javascript - 如果我不知道 javascript 中的完整变量名,如何查找变量/数组
- jquery-animate - 循环幻灯片中的动画元素
- bitbucket - 如何在 bitbucket 上添加身份验证文件?
- swift - 关于 Alert() 调用中的额外闭包的问题 (SwiftUI)
- flutter - 颤振一些异常没有被处理/捕获