Mặc dù có vẻ hơi khó xử nhưng đây là những gì có thể làm để đạt được mục tiêu:
SELECT FLOOR(10000 + RAND() * 89999) AS random_number
FROM table
WHERE random_number NOT IN (SELECT unique_id FROM table)
LIMIT 1
Nói một cách đơn giản, nó tạo ra N số ngẫu nhiên, trong đó N là số hàng trong bảng, lọc ra những hàng đã có trong bảng và giới hạn tập hợp còn lại là một.
Nó có thể hơi chậm trên các bảng lớn. Để đẩy nhanh tiến độ, bạn có thể tạo chế độ xem từ các id duy nhất này và sử dụng nó thay vì câu lệnh select lồng nhau.
CHỈNH SỬA:đã loại bỏ dấu ngoặc kép