我有一个存储消息的数据库。有一个“计数”列,因此第一个消息的计数为1,第二个消息的计数为2等等。
现在,我正在寻找一种检测消息是否丢失的方法,例如:“从消息中选择计数”返回1,2,4,而不是1,2,3,4。
我在后端使用休眠模式。因此,也欢迎使用Java解决方案。
谢谢。
答案 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