Sử dụng hàm RAND() kết hợp FLOOR() để sinh số nguyên ngẫu nhiên trong khoảng xác định.
Tạo bảng và dữ liệu ban đầu
mysql> CREATE TABLE DemoTable(Value INT); Query OK, 0 rows affected (0.46 sec) mysql> INSERT INTO DemoTable VALUES(10), (20), (30); Query OK, 3 rows affected
Cập nhật thành số ngẫu nhiên
mysql> UPDATE DemoTable SET Value = FLOOR(@number * RAND()) + 1; Query OK, 3 rows affected (0.17 sec)
Kết quả (ví dụ):
+-------+ | Value | +-------+ | 2 | | 2 | | 1 | +-------+
⚠️ Vấn đề trong ví dụ: Biến @number chưa được gán giá trị, nên kết quả phụ thuộc vào giá trị trước đó trong session (có thể là NULL → kết quả 1).
Cách đúng để sinh số ngẫu nhiên 1-100:
UPDATE DemoTable SET Value = FLOOR(100 * RAND()) + 1;
Chèn trực tiếp số ngẫu nhiên:
INSERT INTO DemoTable VALUES (FLOOR(100 * RAND()) + 1);
Sinh nhiều hàng ngẫu nhiên:
INSERT INTO DemoTable SELECT FLOOR(100 * RAND()) + 1 FROM (SELECT 1 UNION SELECT 2 UNION SELECT 3) AS t;