Mysql
 sql >> Datenbank >  >> RDS >> Mysql

GROUP BY gibt den ersten Datensatz zurück

Ich nehme an, Sie sprechen von etwas wie

SELECT  *
FROM    mytable
GROUP BY
        column

Sie sollten keine nicht aggregierten Ausdrücke in GROUP BY verwenden es sei denn, sie sind innerhalb der Gruppe alle gleich.

Wenn Sie den Datensatz mit dem geringsten Wert eines Ausdrucks innerhalb einer Gruppe zurückgeben möchten, verwenden Sie Folgendes:

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
        )