Да, нормално е.
Никога не трябва да разчитате на реда, в който се връщат негрупираните и неагрегираните полета.
GROUP_CONCAT
има свой собствен ORDER BY
клауза, която оптимизаторът взема предвид и може да промени реда, в който анализира записите.
За да върнете първия запис заедно с GROUP_CONCAT
, използвайте това:
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