Mysql
 sql >> Base de données >  >> RDS >> Mysql

GROUP BY renvoie le premier enregistrement

Je suppose que vous parlez de quelque chose comme

SELECT  *
FROM    mytable
GROUP BY
        column

Vous ne devez pas utiliser d'expressions non agrégées dans GROUP BY à moins qu'ils ne soient tous identiques au sein du groupe.

Si vous souhaitez renvoyer l'enregistrement contenant la plus petite valeur d'une expression dans un groupe, utilisez ceci :

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
        )