Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

GROUP BY retorna o primeiro registro


Eu suponho que você está falando de algo como
SELECT  *
FROM    mytable
GROUP BY
        column

Você não deve usar expressões não agregadas em GROUP BY a menos que sejam todos iguais dentro do grupo.

Se você quiser retornar o registro que contém o menor valor de uma expressão dentro de um grupo, use isto:
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
        )