Обнаружение пропущенных записей в пронумерованной таблице - PullRequest
0 голосов
/ 15 марта 2019

У меня есть база данных, в которой хранятся сообщения. Существует столбец «count», поэтому первое сообщение имеет счет 1, второе сообщение 2 и т. Д.

Теперь я ищу способ определить, отсутствует ли сообщение, например: «выберите счетчик из сообщения» возвращает 1,2,4 вместо 1,2,3,4.

Я использую Hibernate на сервере. Так что решение на Java тоже приветствуется.

Спасибо.

Ответы [ 2 ]

1 голос
/ 15 марта 2019

Попробуйте сравнить количество строк и максимальное значение в столбце 'count'

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

если столбец 'count' начинается с числа больше 0, вместо max используйте диапазон от max до min + 1

  SELECT ( count(*) != (max(count) - min(count) + 1) ) AS MISSING_MESSAGE FROM message 
0 голосов
/ 15 марта 2019

Если вы хотите список пропущенных счетчиков

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
...