SQL Команда для включения случайной строки из таблицы - PullRequest
0 голосов
/ 01 февраля 2020

У меня есть этот код, который позволяет мне выбрать пользователя из базы данных и ограничить его только 1, но как выбрать случайного пользователя из базы данных SQL? большое спасибо.

SELECT username FROM books LIMIT 1;

Ответы [ 2 ]

3 голосов
/ 01 февраля 2020

Каноническое решение в MySQL:

SELECT username 
FROM books 
ORDER BY RAND()
LIMIT 1;

Однако таблицы сортировки могут стоить очень . Если у вас большой стол, то что-то вроде этого может быть намного быстрее:

SELECT username
FROM books b CROSS JOIN
     (SELECT COUNT(*) as cnt FROM books b) bb
WHERE rand() < 100 / cnt
ORDER BY rand()
LIMIT 1;
1 голос
/ 01 февраля 2020

Для Mysql

Самое простое, что вы можете сделать, это ЗАКАЗАТЬ ПО СЛУЧАЮ (). Однако для больших таблиц это медленная операция. Поскольку это потребует полного сканирования таблицы.

SELECT username 
FROM books 
ORDER BY RAND()
LIMIT 1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...