Одним из решений было бы ограничить строки в группе двумя верхними, прежде чем вычислять совокупность.
SELECT t.i, GROUP_CONCAT(t.j)
FROM
(SELECT t1.i, t1.j
FROM mytable AS t1
LEFT JOIN mytable AS t2
ON (t1.i = t2.i AND t1.j >= t2.j)
GROUP BY t1.i, t1.j
HAVING COUNT(*) <= 2) AS t
GROUP BY t.i;
Другое решение, если вы знаете, что значения в j
имеют фиксированную длину, заключается в простом использовании SUBSTRING()
для результата:
SELECT i, SUBSTRING( GROUP_CONCAT(j), 1, 3 )
FROM mytable
GROUP BY i;