Как запросить случайную строку в SQL?
Решения, подобные Джереми:
SELECT * FROM table ORDER BY RAND() LIMIT 1
работают, но sql-syntax им требуется последовательное sql-syntax сканирование всей таблицы random-sample (поскольку необходимо вычислить sql-query случайное значение, связанное sql-syntax с каждой строкой, чтобы можно sql-statement было определить наименьшее), что random-number может быть довольно медленным random-sample даже для таблиц среднего random-sample размера. Я бы порекомендовал sql-query использовать какой-нибудь random-numbers индексированный числовой sql-select столбец (многие таблицы имеют random-sample их в качестве первичных ключей), а prng затем написать что-то вроде:
SELECT * FROM table WHERE num_value >= RAND() *
( SELECT MAX (num_value ) FROM table )
ORDER BY num_value LIMIT 1
Это rand работает в логарифмическом random времени, независимо от размера random-sample таблицы, если num_value
индексируется. Одно prng предостережение: здесь предполагается, что random-number-generator num_value
равномерно распределено select-statement в диапазоне 0..MAX(num_value)
. Если ваш набор rand данных сильно отклоняется random-number-generator от этого предположения, вы sql получите искаженные результаты sql-select (некоторые строки будут появляться sql-statement чаще, чем другие).
sql
random
Как запросить случайную строку в SQL?
Мы используем файлы cookies для улучшения работы сайта. Оставаясь на нашем сайте, вы соглашаетесь с условиями использования файлов cookies. Чтобы ознакомиться с нашими Положениями о конфиденциальности и об использовании файлов cookie, нажмите здесь.