我有一個group_concat,它返回一列中的所有字符串。字符串可以是可變長度的。如何選擇由group_concat返回的第一個字符串(其中「第一個」由group_concat排序子句定義)?mysql - 選擇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'將返回'蘿蔔,胡蘿蔔'。然後,找到第一個逗號。然後子字符串返回所有字符到這個逗號。 所以selectedVeg等於'蘿蔔'。
我已經添加了一個'concat'來確保總是有一個逗號來查找。
這看起來似乎非常有效,因爲group_concat必須運行兩次(在我的實際問題中它非常複雜)。 謝謝。
如果你只是從蔬菜的「類型」中返回一個SINGLE項目,那麼你是否還有一個原因,你甚至會對羣組concat產生困擾?我不是,它更簡單,但如果你使用的是group_concat,只要不想混淆最終答案,那麼仍然可以完成。另外,如果兩個或更多的蔬菜具有相同的「最低」價格,那該怎麼辦? – DRapp 2011-05-20 13:53:15
謝謝@DRapp如果我可以做到這一點,而不使用group_concat,那麼這將是偉大的。我該怎麼做呢?由於「小組」會自行返回隨機蔬菜。如果兩個蔬菜價格相同,那麼返回哪一個蔬菜並不重要。 – spiderplant0 2011-05-20 13:56:58