Макар да изглежда малко неудобно, ето какво може да се направи, за да се постигне целта:
SELECT FLOOR(10000 + RAND() * 89999) AS random_number
FROM table
WHERE random_number NOT IN (SELECT unique_id FROM table)
LIMIT 1
Просто казано, той генерира N произволни числа, където N е броят на редовете в таблицата, филтрира тези, които вече присъстват в таблицата, и ограничава оставащия набор до едно.
Може да е малко бавно на големи маси. За да ускорите нещата, можете да създадете изглед от тези уникални идентификатори и да го използвате вместо вложен оператор select.
РЕДАКТИРАНЕ:премахнати кавички