1group_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」は「カブ、ニンジン」を返します。次に、locate は最初のカンマを見つけます。そして substring は、このカンマまでのすべての文字を返します。したがって、「selectedVeg」は「カブ」と同じです。
を追加して、検索するコンマCONCAT
が常に 1 つあるようにしました。LOCATE
を2回実行する必要があるため、これはあまり効率的ではないようですGROUP_CONCAT
(実際の問題では非常に複雑です)。
ありがとう。