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_concating 而不分配任何特定顺序。结果按照插入顺序对字符串进行了排序。也就是说,首先插入的记录首先出现在 concat 字符串中,最后一条记录作为字符串中的最后一条。

那么我可以根据内部查询的读取顺序在 group_concat 函数中安排/排序我的结果集吗?

4

4 回答 4

2

刚刚查看了文档:http ://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat 发现这一行:

要对结果中的值进行排序,请使用 ORDER BY 子句。

以及这个,例如:

 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
group_concat(entered_code order by entered_code)
于 2012-10-05T13:50:30.890 回答
1

在您给出结果之前没有看到完整的查询和表数据,很难告诉您可以添加一个ORDER BYGROUP_CONCAT()但是,它在这个演示中似乎工作正常:

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

请参阅SQL Fiddle with Demo

于 2012-10-05T13:59:10.900 回答
0

至于文档,您必须能够根据某些字段或表达式对组 concat 结果进行排序。http://dev.mysql.com/doc/refman/5.0/en/group-by-functions.html#function_group-concat

您根本不应该依赖“插入顺序”,因为 MySQL 中没有这样的功能。在大多数情况下,您会按此顺序查看数据,但实际上并未对其进行排序,以后您会变得不那么相关,此顺序将变得如此。

于 2012-10-05T13:57:35.230 回答