Vâng, đó là điều bình thường.
Bạn không bao giờ nên dựa vào thứ tự mà các trường chưa được nhóm và chưa được tổng hợp được trả về.
GROUP_CONCAT
có ORDER BY
của riêng nó mệnh đề mà trình tối ưu hóa tính đến và có thể thay đổi thứ tự phân tích cú pháp các bản ghi.
Để trả về bản ghi đầu tiên cùng với GROUP_CONCAT
, sử dụng cái này:
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