Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 从每个id获取最后一行并将其与计数进行比较_Sql_Database_Postgresql - Fatal编程技术网

Sql 从每个id获取最后一行并将其与计数进行比较

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

我在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
    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是解决方案,我完全忘记了。。多谢各位!