我有一个group_concat
从一列返回所有字符串。字符串可以是可变长度的。如何选择返回的第一个字符串group_concat
(其中“第一个”由group_concat
排序子句定义)?
这是一个简化的例子。从蔬菜表中选择每种蔬菜类型中最便宜的蔬菜。
从此表:
蔬菜类价格 ---------------------- 胡萝卜根 1.23 萝卜根 0.45 豆芽芽 3.56 ...
选择这个:
精选蔬菜价格 ------------------ 萝卜 0.45 豆芽 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”将返回“萝卜,胡萝卜”。然后定位找到第一个逗号。然后 substring 返回该逗号之前的所有字符。所以“selectedVeg”等于“萝卜”。
我添加了一个CONCAT
以确保始终有一个逗号可供LOCATE
查找。
这似乎不是很有效,因为GROUP_CONCAT
必须运行两次(这在我的实际问题中非常复杂)。
谢谢。