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

GROUP_CONCAT ändern die GROUP BY-Reihenfolge

Ja, das ist normal.

Sie sollten sich niemals auf die Reihenfolge verlassen, in der nicht gruppierte und nicht aggregierte Felder zurückgegeben werden.

GROUP_CONCAT hat einen eigenen ORDER BY Klausel, die der Optimierer berücksichtigt und die Reihenfolge ändern kann, in der er die Datensätze parst.

Um den ersten Datensatz zusammen mit GROUP_CONCAT zurückzugeben , verwenden Sie dies:

SELECT  m.*, gc
FROM    (
        SELECT  id, MIN(date) AS mindate, GROUP_CONCAT(tags) AS gc
        FROM    myview
        GROUP BY
                id
        ) md
JOIN    m.*
ON      m.id = md.id
        AND m.date = md.mindate