Tak, to normalne.
Nigdy nie powinieneś polegać na kolejności, w jakiej niezgrupowane i niezagregowane pola są zwracane.
GROUP_CONCAT
ma swój własny ORDER BY
klauzula, którą optymalizator bierze pod uwagę i może zmienić kolejność, w jakiej analizuje rekordy.
Aby zwrócić pierwszy rekord wraz z GROUP_CONCAT
, użyj tego:
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