У меня есть group_concat, который возвращает все строки из одного столбца.Строки могут быть переменной длины.Как выбрать первую строку, возвращаемую group_concat (где 'first' определяется предложением group_concat для порядка)?
Вот упрощенный пример.Из таблицы овощей выберите самый дешевый овощ из каждого типа овощей.
Из этой таблицы ...
veg type price
-------------------
carrot root 1.23
turnip root 0.45
sprouts bud 3.56
...
выберите этот ....
selectedVeg price
-------------------
turnip 0.45
sprouts 3.56
...
Моя неуклюжая попытка ....
select
substring(
group_concat(veg order by price),
1,
locate(',',
concat(
group_concat(veg order by price),
',')
)
-1)
as selectedVeg
from vegTable
group by type
Так что для корневого типа овощей, group_concat вернет "репа, морковь".Затем locate находит первую запятую.И тогда подстрока возвращает все символы до этой запятой.Таким образом, selectedVeg равно «репа».
Я добавил «concat», чтобы убедиться, что для поиска всегда есть одна запятая.
Это не кажется очень эффективным, так как group_concat долженбыть запущенным дважды (и это довольно сложно в моей актуальной проблеме).Благодаря.