2017-02-27 9 views
0

私はgrouped_valueとしてエイリアスコンマ区切り値を、作成するためにGROUP_CONCAT機能を使用しています以下のGroup_Concat列でソートするときに `TRIM`を使うにはどうすればいいですか?

SELECT 
    ta.*, 
    GROUP_CONCAT(tb.value) AS `grouped_value` 
FROM 
    test.test_a ta 
INNER JOIN test.test_b tb ON tb.id = ta.t_id 
GROUP BY ta.t_id 
ORDER BY `grouped_value` ASC 

に似ていますMySQLのクエリを持っています。上記のクエリは正常に動作しますが、grouped_valueには先頭のスペースと最後の結果の並べ替えが含まれています。私はTRIM関数を使用しようとしましたが、このインスタンスでは動作しません。

SELECT 
     ta.*, 
     GROUP_CONCAT(tb.value) AS `grouped_value` 
FROM 
    test.test_a ta 
INNER JOIN test.test_b tb ON tb.id = ta.t_id 
GROUP BY ta.t_id 
ORDER BY TRIM(`grouped_value`) ASC 

エラーメッセージ

エラーコード:1247 - リファレンス 'grouped_value' はサポートされていない(グループ関数への参照)

に並べ替えながらTRIMを使用することが可能ですグループ連結列?そうでない場合、このエラーの回避策は何ですか?

+0

なぜGROUP BYを使用せずに集計関数 'GROUP_CONCAT()'を使用していますか?あなたは本当に何をしたいですか?現在のクエリは意味がないようです。 –

+0

@TimBiegeleisen私は 'GROUP BY'を追加しました。私は質問を書いている間にそれを見逃しました。 – Wondercricket

+0

グループ化する前にトリムしますか? 'GROUP_CONCAT(trim.value)as grouped_value' – dognose

答えて

2

リスト内の個々の値をそれぞれトリミングするように見えます。 GROUP_CONCATコール内部その場合の場所、それには:

SELECT 
    ta.*, 
    GROUP_CONCAT(TRIM(tb.value)) AS grouped_value 
FROM 
    test.test_a ta 
INNER JOIN test.test_b tb ON tb.id = ta.t_id 
GROUP BY ta.t_id 
ORDER BY grouped_value ASC 

あなたが表示されている値に空白を維持する必要がある場合は、コメントで述べたように、そしてあなただけのorder by句でトリミングんでしょう:

ORDER BY GROUP_CONCAT(TRIM(tb.value)) ASC 
+0

表示用に空白が必要な場合は、並べ替え(トリミング)専用と表示されない列を使用します。 – dognose

+1

@dognose空白を残す必要があるので、 'group_concat'ではなく' sort'を 'trim'を使っていたのです。答えにあなたの提案を加えることは、回避策として行います – Wondercricket

0

例えばあなたがして、グループなしaggegatioin機能をuingている(とあなたがesplicitallyで選択し、グループ内のカラム名を設定する必要があります) :あんたTAからあなたはcol1とcol2のを持っていると仮定しなければならないため

SELECT 
    ta.col1, ta.col2, 
    GROUP_CONCAT(tb.value) AS `grouped_value` 
FROM 
    test.test_a ta 
INNER JOIN test.test_b tb ON tb.id = ta.t_id 
GROUP BY ta.col1, ta.col2, 
ORDER BY `grouped_value` ASC 

ANFをトリムシンプルに結果に適用

SELECT 
    ta.col1, ta.col2, 
    trim(GROUP_CONCAT(tb.value)) AS `grouped_value` 
FROM 
    test.test_a ta 
INNER JOIN test.test_b tb ON tb.id = ta.t_id 
GROUP BY ta.col1, ta.col2, 
ORDER BY `grouped_value` ASC 
関連する問題