MySQL - ¿Cómo ordeno los resultados al azar dentro de una columna?

votos
1

Necesito recuperar filas de una tabla (es decir, 'pedidos') ordenadas por una columna (digamos 'usuario') aleatoriamente. Es decir, necesito que todos los pedidos del mismo usuario permanezcan juntos (uno después del otro) y que los usuarios se ordenen al azar.

Publicado el 12/03/2009 a las 15:30
fuente por usuario
En otros idiomas...                            


3 respuestas

votos
3

Voy a suponer que tienes una segunda tabla llamada "usuarios" que tiene todos los usuarios en ella. De lo contrario, aún podría hacer esto agregando otra subconsulta SELECT DISTINCT en las órdenes, pero eso sería mucho más complicado:

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

Querrá ordenar por el número aleatorio Y la identificación del usuario, de modo que si dos identificadores de usuario obtienen el mismo número aleatorio, sus órdenes no estarán mezcladas.

Respondida el 12/03/2009 a las 15:45
fuente por usuario

votos
0

ordenar por reversa (usuario)?

Respondida el 13/03/2009 a las 12:08
fuente por usuario

votos
0

¿Qué tan aleatorio tiene que ser? Puedo pensar en algunas posibles respuestas.

Si la secuencia "aleatoria" debe ser repetible, puede ordenar por un hash de la ID de usuario, utilizando MD5 o uno personalizado que cree usted mismo, p. Ej. ORDER BY MD5 (), secondary_sort_column.

Respondida el 12/03/2009 a las 15:44
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more