Bạn có thể sử dụng các biến cho loại tổng hợp này, nhưng truy vấn phức tạp hơn một chút, vì bạn cần liệt kê các giá trị cho mỗi thứ tự:
SELECT o.order_id,
MAX(case when rank = 1 then created_at end) as created_at_1,
MAX(case when rank = 1 then email end) as email_1,
MAX(case when rank = 1 then content end) as content_1,
MAX(case when rank = 2 then created_at end) as created_at_2,
MAX(case when rank = 2 then email end) as email_2,
MAX(case when rank = 2 then content end) as content_2,
FROM orders o LEFT JOIN
(SELECT oc.*,
(@rn := if(@o = order_fk, @rn + 1,
if(@o := order_fk, 1, 1)
)
) as rank
FROM order_comments oc CROSS JOIN
(SELECT @rn := 0, @o := 0) vars
ORDER BY order_fk, created_at
) oc
ON o.order_id = oc.order_fk
GROUP BY o.order_id;