Java 检测编号表上的缺失记录
我有一个储存信息的数据库。有一个“count”列,所以第一条消息有count 1,第二条消息有count 2,以此类推 现在我正在寻找一种检测消息是否丢失的方法,例如:“SelectCountfromMessage”返回1,2,4,而不是1,2,3,4 我在后端使用hibernate。因此,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
谢谢。尝试比较“计数”列中的行计数和最大值
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