Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.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
Java 检测编号表上的缺失记录_Java_Sql_Hibernate_Spring Data Jpa_Spring Data - Fatal编程技术网

Java 检测编号表上的缺失记录

Java 检测编号表上的缺失记录,java,sql,hibernate,spring-data-jpa,spring-data,Java,Sql,Hibernate,Spring Data Jpa,Spring Data,我有一个储存信息的数据库。有一个“count”列,所以第一条消息有count 1,第二条消息有count 2,以此类推 现在我正在寻找一种检测消息是否丢失的方法,例如:“SelectCountfromMessage”返回1,2,4,而不是1,2,3,4 我在后端使用hibernate。因此,Java解决方案也是受欢迎的 谢谢。尝试比较“计数”列中的行计数和最大值 SELECT ( count(*) != max(count) ) AS MISSING_MESSAGE FROM message

我有一个储存信息的数据库。有一个“count”列,所以第一条消息有count 1,第二条消息有count 2,以此类推

现在我正在寻找一种检测消息是否丢失的方法,例如:“SelectCountfromMessage”返回1,2,4,而不是1,2,3,4

我在后端使用hibernate。因此,Java解决方案也是受欢迎的


谢谢。

尝试比较“计数”列中的行计数和最大值

  SELECT ( count(*) != max(count) ) AS MISSING_MESSAGE FROM message 
如果“计数”列以大于0的数字开始,而不是以最大值开始,请使用最大值和最小值+1之间的范围

  SELECT ( count(*) != (max(count) - min(count) + 1) ) AS MISSING_MESSAGE FROM message 

如果你想要一份错过计数的列表

SELECT a.count - 1
FROM message a LEFT JOIN message b ON b.count = a.count - 1
WHERE a.count > 1 && b.count is NULL

如果代码内解决方案有效,您可以选择好的解决方案,谢谢。假设有一天我决定删除前50条消息,我知道第一条消息是51号。我们可以修改这种情况下的查询吗?@NoobieNoob是的,使用最大值和最小值之间的范围+1,因为如果只有1条记录,例如(51),范围将是0(51-51),但预期的行数是1