¿Cómo puede una consulta devolver solo una fila aleatoria para cada columna distinta?

StackOverflow https://stackoverflow.com/questions/1023657

  •  06-07-2019
  •  | 
  •  

Pregunta

Tengo una tabla con dos columnas, por ejemplo, column1 y column2. Column2 no es único. Para cada valor distinto de column2, ¿quiero una fila aleatoria, solo una fila, de la tabla?

es decir mi conjunto de resultados debe tener tantas filas como el número de valores distintos de column2.

por ejemplo:

column1   column2
x         1
y         2
z         1

Quiero que el resultado sea

column1   column2
x         1
y         2

o

column1   column2
z         1
y         2

¿Es esto posible usando solo SQL?

¿Fue útil?

Solución

Esta consulta debería hacer el truco en MySQL (probado en MySQL 5):

select a.column1, a.column2 from (select * from foo b order by rand()) a group by a.column2;

Otros consejos

SELECT MAX (column1), column2 FROM yourtablename GROUP BY column2

Es posible que desee probar algo como ROW_NUMBER () OVER (ORDER BY column1 asc) para retirar los números de fila y filtrarlos de esa manera.

No mencionaste qué sabor de SQL usas y lo recuerdo de memoria, pero este tipo de cosas funciona en Oracle 9.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top