RAND
Синтаксис
RAND(), RAND(N)
Описание
Возвращает случайное значение с плавающей точкой v с точностью DOUBLE в диапазоне 0 <= v < 1,0. Если указан целочисленный аргумент N, он используется в качестве значения начального состояния, что приводит к воспроизводимой последовательности значений столбцов. В примере ниже обратите внимание, что последовательности значений, полученные RAND(3), одинаковы в обоих местах, где они встречаются.
В операторе WHERE RAND() вычисляется каждый раз, когда выполняется WHERE.
Операторы, использующие функцию RAND(), не являются безопасными для репликации на основе операторов.
Практическое применение
Выражение для получения случайного целого числа из заданного диапазона:
FLOOR(min_value + RAND() * (max_value - min_value +1))
RAND() часто используется для чтения случайных строк из таблицы следующим образом:
SELECT * FROM my_table ORDER BY RAND() LIMIT 10;
Однако этот метод не следует использовать для больших таблиц, так как он будет очень медленным. MariaDB прочитает все строки в таблице, сгенерирует случайное значение для каждой из них, отсортирует их и, наконец, применит оператор LIMIT.
Примеры
CREATE TABLE t (i INT); INSERT INTO t VALUES(1),(2),(3); SELECT i, RAND() FROM t; +------+-------------------+ | i | RAND() | +------+-------------------+ | 1 | 0.255651095188829 | | 2 | 0.833920199269355 | | 3 | 0.40264774151393 | +------+-------------------+ SELECT i, RAND(3) FROM t; +------+-------------------+ | i | RAND(3) | +------+-------------------+ | 1 | 0.90576975597606 | | 2 | 0.373079058130345 | | 3 | 0.148086053457191 | +------+-------------------+ SELECT i, RAND() FROM t; +------+-------------------+ | i | RAND() | +------+-------------------+ | 1 | 0.511478140495232 | | 2 | 0.349447508668012 | | 3 | 0.212803152588013 | +------+-------------------+
Используя одно и то же начальное состояние, будет возвращена одна и та же последовательность:
SELECT i, RAND(3) FROM t; +------+-------------------+ | i | RAND(3) | +------+-------------------+ | 1 | 0.90576975597606 | | 2 | 0.373079058130345 | | 3 | 0.148086053457191 | +------+-------------------+
Генерация случайного числа от 5 до 15:
SELECT FLOOR(5 + (RAND() * 11));
См. также
© 2023 MariaDB
Licensed under the Creative Commons Attribution 3.0 Unported License and the GNU Free Documentation License.
https://mariadb.com/kb/en/rand/