sql >> Base de Datos >  >> RDS >> Mysql

SQL:¿Cómo mantener el orden de las filas con DISTINCT?

el distinct palabra clave está haciendo lo que se supone que debe hacer, devolver una fila cada una con un valor de columna dado. Distinct no le permite especificar cuál se devolverá dicha fila, y está claro de la consulta original que se permite tal orden (hay una fila con id 443 que sigue a una fila con id 429).

Para controlar qué filas se devolverán, debe reformular la consulta. Una solución típica que tomaré es usar un group by , seleccionando la columna del grupo y la fila deseada de cada grupo, algo así como

SELECT message.id, MAX(message.created_at) FROM message GROUP BY message.id;

Si necesito hacer más, usaré este tipo de consulta como una subselección en una consulta más grande, posiblemente uniéndome al campo de identificación para obtener más campos de la fila preferida, u ordenando la consulta de una manera particular.