Найти/определить/приблизительно вычислить какого id (auto increment-primary key) нет в базе - MySQL

Узнай цену своей работы

Формулировка задачи:

Дано: простая таблица с 2 колонками id(a_i), value(varchar). Дамп такой: 1-картошка 2-яблоко 3-помидор 5-тыква 9-баклажан Нужно: получить 4 или 6 или 7 или 8. Разрешено: использовать php. Не разрешено: делать SELECT * ... WHERE 1 и проверять каждую запись, т.к. возможно в таблице будет сотни тысяч записей.

Решение задачи: «Найти/определить/приблизительно вычислить какого id (auto increment-primary key) нет в базе»

textual
Листинг программы
SELECT  
FROM
  `простая таблица` t1
  LEFT JOIN  `простая таблица` t2 ON t1.Id + 1 = t2.Id
WHERE  t2.Id IS NULL AND t1.Id < (SELECT Max(Id) FROM `простая таблица`)

Объяснение кода листинга программы

В этом коде выполняется следующая последовательность действий:

  1. Выполняется запрос SELECT, который выбирает все столбцы из таблицы простая таблица.
  2. В строке FROM указывается таблица простая таблица и ей присваивается псевдоним t1.
  3. В строке WHERE указывается условие, что t2.Id должен быть NULL и t1.Id должен быть меньше максимального значения Id в таблице.
  4. В строке LEFT JOIN указываются таблица простая таблица с псевдонимом t2, и выполняется операция объединения строк из t1 и t2 по значению столбца Id.
  5. В результате выполнения запроса будет возвращены все строки из t1, которые не имеют соответствующей строки в t2 с Id на единицу больше текущего значения Id в строке.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 4.143 из 5