Sql 从每个id获取最后一行并将其与计数进行比较
我在postgresql数据库中有一个包含消息infos的表。每条消息都有自己的id和版本号1、2、3等,但可能会丢失某些版本,因此会出现版本为1、2、4、5等的消息。 我需要做的是找出有多少邮件缺少版本号。我写了一个代码Sql 从每个id获取最后一行并将其与计数进行比较,sql,database,postgresql,Sql,Database,Postgresql,我在postgresql数据库中有一个包含消息infos的表。每条消息都有自己的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 o
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插入子查询。有人知道吗?这里有一种方法可以识别缺失的版本:
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;
以下是一种识别缺失版本的方法:
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;
哦,max是解决方案,我完全忘记了。。多谢各位!哦,max是解决方案,我完全忘记了。。多谢各位!