0

データベースから次の順序でレコードを返すクエリがあります。

app_id  app_name    transaction_id  mobile_no   logtime_stamp          navigation_type   entered_code   display_text          User_Response
111     Unicef      1133           919552516853 10/5/2012 12:52:37 PM      0              Maharashtra   Student Attendance     2
111     Unicef      1133           919552516853 10/5/2012 12:52:37 PM      0              Pune          Student Attendance     2
111     Unicef      1133           919552516853 10/5/2012 12:52:37 PM      0              Baramati      Student Attendance     2
111     Unicef      1133           919552516853 10/5/2012 12:52:37 PM      0              Ravi School   Student Attendance     2

上記のレコードを返すクエリは内部クエリです。

これらのレコードで group_concat を実行して、単一の行を取得しています。

次のレコードを取得しています。

app_name    transaction_id  mobile_no          entered_code                          display_text      User_Response
Unicef      1133            919552516853    Baramati,Ravi School,Maharashtra,Pune     Student Attendance        2

group_concat今、私は文字列を注文する関数が何に基づいているのか理解していません.Baramati、Ravi School、Maharashtra、Pune !?

最初のセットとまったく同じ順序で並べたい: マハラシュトラ、プネ、バラマティ、ラヴィ スクール

私の知る限り、group_concat の文字列はデフォルトでアルファベット順にソートされます。しかし、上記の結果はそれを否定します。

また、テーブルからレコードを読み取り、特定の順序を割り当てずにグループ連結するサンプルクエリを試しました。結果には、挿入順序に従ってソートされた文字列が含まれていました。つまり、最初に挿入されたレコードが連結文字列で最初に表示され、最後のレコードが文字列の最後として表示されます。

内部クエリの読み取り順序に基づいて、group_concat 関数で結果セットを配置/順序付けできますか?

4

4 に答える 4

2

ドキュメントを見てください:http ://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat次の 行が見つかりました:

結果の値を並べ替えるには、ORDERBY句を使用します。

これと同様に、例として:

 mysql> SELECT student_name,
     ->     GROUP_CONCAT(DISTINCT test_score
     ->               ORDER BY test_score DESC SEPARATOR ' ')
     ->     FROM student
     ->     GROUP BY student_name;
于 2012-10-05T13:54:09.770 に答える
1

提供した結果の前に完全なクエリとテーブルデータを確認しないと、を追加できるかどうかを判断するのは困難ですがORDER BYGROUP_CONCAT()このデモでは正常に機能しているようです。

select app_name,
  transaction_id,
  mobile_no,
  group_concat(entered_code),
  display_text,
  User_Response
from yourtable

SQL FiddlewithDemoを参照してください。

于 2012-10-05T13:59:10.900 に答える
1
group_concat(entered_code order by entered_code)
于 2012-10-05T13:50:30.890 に答える
0

ドキュメントに関しては、フィールドまたは式に基づいてグループ連結結果を並べ替えることができる必要があります。http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat

MySQLにはそのような機能がないため、「挿入順序」にまったく依存しないでください。ほとんどの場合、データはこの順序で表示されますが、実際には順序付けられておらず、後でこの順序の関連性が低くなります。

于 2012-10-05T13:57:35.230 に答える