Mysql
 sql >> Database >  >> RDS >> Mysql

GROUP BY restituisce il primo record

Presumo che tu stia parlando di qualcosa come

SELECT  *
FROM    mytable
GROUP BY
        column

Non dovresti usare espressioni non aggregate in GROUP BY a meno che non siano tutti uguali all'interno del gruppo.

Se vuoi restituire il record che contiene il valore minimo di un'espressione all'interno di un gruppo, usa questo:

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
        )