Еще один способ сделать это (без первичного ключа) - использовать функции JSON:
select somecolumn, json_unquote( json_extract(json_arrayagg(othercolumn), "$[0]") )
from sometable group by somecolumn
или предварительно 5.7.22
select somecolumn,
json_unquote(
json_extract(
concat('["', group_concat(othercolumn separator '","') ,'"]')
,"$[0]" )
)
from sometable group by somecolumn
Заказ (или фильтрацию) можно выполнить перед группировкой:
select somecolumn, json_unquote( json_extract(json_arrayagg(othercolumn), "$[0]") )
from (select * from sometable order by othercolumn) as t group by somecolumn
... или после группировки (конечно):
select somecolumn, json_unquote( json_extract(json_arrayagg(othercolumn), "$[0]") ) as other
from sometable group by somecolumn order by other
По общему признанию, это довольно запутанно, и производительность, вероятно, не велика (не проверял это на больших данных, хорошо работает на моих ограниченных наборах данных).