Oui, c'est normal.
Vous ne devez jamais vous fier à l'ordre dans lequel les champs non groupés et non agrégés sont renvoyés.
GROUP_CONCAT
a son propre ORDER BY
clause que l'optimiseur prend en compte et peut modifier l'ordre dans lequel il parse les enregistrements.
Pour renvoyer le premier enregistrement avec GROUP_CONCAT
, utilisez ceci :
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