Без реального идентификатора действительно сложно.Поэтому я ввожу rowNumber
:
SELECT (@row := @row + 1) AS rowNumber, ID,value
FROM myTable
CROSS JOIN (SELECT @row := 0) AS dummy
Затем я добавляю 2 столбца с max Value
:
SELECT a.*
FROM customTable as a
LEFT OUTER JOIN myTable b ON a.id = b.id AND a.value < b.value
WHERE b.id IS NULL
После этого мне нужно использовать group_concat(value)
и group by
.Group by
имеет 2 условия, id
и другое пользовательское логическое поле:
CASE
WHEN l1.rowNumber <= l2.rowNumber THEN 0
ELSE 1
END
ЗАКЛЮЧИТЕЛЬНЫЙ ЗАПРОС:
SELECT ct1.id, group_concat(ct1.value) as Value
FROM (
SELECT (@cnt := @cnt + 1) AS rowNumber, ID, value
FROM myTable
CROSS JOIN (SELECT @cnt := 0) AS dummy
) AS ct1
JOIN (
SELECT a.*
FROM (
SELECT (@row := @row + 1) AS rowNumber, ID, value
FROM myTable
CROSS JOIN (SELECT @row := 0) AS dummy
) AS a
LEFT OUTER JOIN myTable b ON a.id = b.id AND a.value < b.value
WHERE b.id IS NULL
) AS ct2 ON ct2.ID = ct1.id
GROUP BY ct1.id,
CASE
WHEN ct1.rowNumber <= ct2.rowNumber THEN 0
ELSE 1
END
Вы можете проверить Здесь.
Это работает только с MySQL 5.6 или выше