在编号表上检测丢失的记录

时间:2019-03-14 21:37:51

标签: java sql hibernate spring-data-jpa spring-data

我有一个存储消息的数据库。有一个“计数”列,因此第一个消息的计数为1,第二个消息的计数为2等等。

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

我在后端使用休眠模式。因此,也欢迎使用Java解决方案。

谢谢。

2 个答案:

答案 0 :(得分:1)

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

  SELECT ( count(*) != max(count) ) AS MISSING_MESSAGE FROM message 

如果“计数”列以大于0的数字(而不是最大值)开头,请使用max和min + 1之间的范围

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

答案 1 :(得分:0)

如果您要列出未清计数的列表

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