Aquí podría ser tu PUBLICIDAD


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 Gerardo
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 03:45
fuente por usuario Eric Petroelje


Aquí podría ser tu PUBLICIDAD


votos
0

ordenar por reversa (usuario)?

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

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 03:44
fuente por usuario mkb