我在postgresql数据库中有一个包含消息信息的表。每条消息都有自己的ID和版本号(1,2,3等),但有些版本可能会丢失,因此会出现版本为1,2,4,5等的消息。 我需要做的是找出有多少邮件丢失了他们的版本号。我写了一段代码
select id_msg, count(version)
from message
group by id_msg
having count(version) = (
select version
from message
order by version desc
limit 1
);
但它不是一个合适的解决方案,因为我不知道如何将消息ID(当前正在检查)插入子查询。有人有想法吗?
答案 0 :(得分:0)
以下是识别缺失版本的一种方法:
select id_msg
from message m
group by id_msg
having count(*) <> max(version);
然后您可以使用子查询来计算这些:
select count(*)
from (select id_msg
from message m
group by id_msg
having count(*) <> max(version)
) m;