Postgresql 对于联接表中不存在的行,如何将空值更新为0?

Postgresql 对于联接表中不存在的行,如何将空值更新为0?,postgresql,join,sql-update,Postgresql,Join,Sql Update,我有两张桌子 requests id|code|count| oldrequests id|code|count| 我需要更新来自oldrequests的请求计数。我尝试使用CoalesColdRequests.count、0更新空计数值的主要问题如下: update request req set count = coalesce(oldreq.count,0) from oldrequests oldreq where req.code = oldreq.code update re

我有两张桌子

requests
id|code|count|


oldrequests
id|code|count|
我需要更新来自oldrequests的请求计数。我尝试使用CoalesColdRequests.count、0更新空计数值的主要问题如下:

update request req
set count = coalesce(oldreq.count,0)
from oldrequests oldreq
where req.code = oldreq.code
update request req
set count = 0
from oldrequests oldreq
where req.code = oldreq.code and oldreq.id is null
但是来自未更新的请求的空值。 然后我尝试将空值设置为0,如下所示:

update request req
set count = coalesce(oldreq.count,0)
from oldrequests oldreq
where req.code = oldreq.code
update request req
set count = 0
from oldrequests oldreq
where req.code = oldreq.code and oldreq.id is null
但这对我也没有帮助。
如何更新值和空值?

我的意思是,问题是oldrequests表中没有匹配行的更新计数。我可以建议下一种解决方法:

将requests表中的所有计数更新0,更新后匹配oldrequests表中的行计数,如:

update requests set count = 0;

update requests req
set count = coalesce(oldreq.count,0)
from oldrequests oldreq
where req.code = oldreq.code;
对于不匹配的行,另一种方法在ly上设置为0:

update requests set count = 0
where (select code from oldrequests where oldrequests.code = requests.code) is null;
或使用not exist子句的其他版本:


count和code字段的数据类型是什么?code varchar,count integer这就是我使用coalesce的原因。我的问题是代码是否也是null还是只有count是null?因为您的第一个查询没有任何问题,而在第二个查询中,您编写的oldreq.id为null为什么要检查null以获取id当我在SELECT中使用此in case表达式时,该条件运行良好,但现在我不知道如何在UPDATE中使用此逻辑。例如:“如果oldrequest.id为null,则计数=0结束”。