作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想同时更新 10 个以上的列,我的问题是我想为所有这些列放置 where 子句。
我的代码是:
UPDATE Customer AS c
SET
name = a.name,
address= a.address,
telephone = a.telephone,
--
--
--
FROM Customer a
INNER JOIN
( SELECT casenumber
, max(currentDate) AS md
FROM Customer
GROUP BY casenumber
) AS z
ON z.casenumber = a.casenumber
AND z.md = a.currentDate
WHERE (a.casenumber = c.casenumber)
在上面的语句中,我想添加条件以仅当列不为 0 时才更新列。
例如,
UPDATE Customer AS C
SET name = a.name,
address= a.address,
...
..
WHERE a.name <> 0,
a.address <> 0,
a.telephone <> 0
....
...
是否可以在where条件下检查每一列?
如有任何建议,我们将不胜感激。
最佳答案
类似这样的事情(假设 name <> 0
是一个拼写错误,您的名字实际上是字符列)
UPDATE customer AS c
SET name = CASE WHEN name <> '' THEN a.name ELSE name END,
address = CASE WHEN address <> '' THEN a.address ELSE address END
如果列为空,这实际上会将列更新为其当前值。
请注意,这不处理 NULL 值!如果你需要处理 NULL 和 ''
同样你需要使用 coalesce(name, '')
相反。
关于postgresql - 如何在同时更新多列的同时为多列放置where子句?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7280998/
我是一名优秀的程序员,十分优秀!