Существует таблица "tbl" с уникальными значениями "val" из определенного диапазона (например, от 100 до 999).
Необходимо выбрать гарантированное значение, которого еще нет в таблице, без помощи дополнительной таблицы со всеми существующими значениями в левой ассоциации.
Например.
Заполнение вспомогательной таблицы (весь диапазон) значениями от 1 до 9.
Базовая структура таблицы:
CREATE TABLE `ranger` (
`val` int(2) unsigned NOT NULL,
UNIQUE KEY `val` (`val`)
) ENGINE=MyISAM;
INSERT INTO `ranger` (`val`) VALUES (1), (2), (4), (5), (6), (7), (8);
Чтобы выбрать несуществующее значение из ranger
:
SELECT
val
FROM
ranger_helper
WHERE
val NOT IN(SELECT val FROM ranger)
ORDER BY
RAND()
LIMIT
1