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

GROUP BY devuelve el primer registro

Supongo que estás hablando de algo como

SELECT  *
FROM    mytable
GROUP BY
        column

No debe usar expresiones no agregadas en GROUP BY a menos que sean todos iguales dentro del grupo.

Si desea devolver el registro que contiene el menor valor de una expresión dentro de un grupo, use esto:

SELECT  mo.*
FROM    (
        SELECT  DISTINCT column
        FROM    mytable
        ) md
JOIN    mytable mo
ON      mo.id = 
        (
        SELECT  id
        FROM    mytable mi
        WHERE   mi.column = md.column
        ORDER BY
                mi.column, mi.someorder
        LIMIT 1
        )