MySQL - Как упорядочить результаты случайным образом внутри столбца? - PullRequest
1 голос
/ 12 марта 2009

Мне нужно извлечь строки из таблицы (то есть: «заказы»), упорядоченные по столбцу (скажем, «пользователь») в случайном порядке. То есть мне нужно, чтобы все заказы от одного и того же пользователя оставались вместе (один за другим), а пользователи были заказаны случайным образом.

Ответы [ 3 ]

3 голосов
/ 12 марта 2009

Я собираюсь предположить, что у вас есть вторая таблица под названием «пользователи», в которой есть все пользователи. Если нет, вы все равно можете сделать это, добавив еще один подзапрос SELECT DISTINCT к заказам, но это будет намного сложнее:

SELECT orders.* 
FROM orders 
INNER JOIN (SELECT userid, RAND() as random FROM users) tmp
ON orders.userid = tmp.userid
ORDER BY tmp.random, tmp.userid

Вы захотите упорядочить по случайному номеру И идентификатору пользователя, чтобы, если два идентификатора пользователя получили одно и то же случайное число, их заказы не смешивались.

0 голосов
/ 13 марта 2009

заказ обратный (пользователь)?

0 голосов
/ 12 марта 2009

Насколько случайным оно должно быть? Я могу придумать несколько возможных ответов.

Если «случайная» последовательность должна быть повторяемой, вы можете отсортировать ее по хэшу идентификатора пользователя, используя MD5, или пользовательский, созданный вами, например ЗАКАЗАТЬ ПО MD5 (), вторичная_сортировка_колонка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...