如何与group_concat一起使用订单

时间:2015-06-25 10:20:04

标签: mysql

我在数据库中有以下数据

ID   |  AId            | field           | Value        | internalOrder |
-------------------------------------------------------------------------
| 86 |             193 | h1              | v1           |             1 |
| 43 |             193 | default         | default      |             2 | 

我想得到连接字段,值和internalOrder,按internalOrder sortedBy Aid排序。 所以结果应该像

193 | h1,default | v1,default | 1,2

我尝试了很多东西。

select Aid,group_concat(field), group_concat(value), group_concat(internalOrder order by internalOrder ASC) from table1 group by Aid order by Aid;

这会产生如下结果:

|193 | default,h1 | default,v1 | 1,2 

哪个错了。

如何产生预期效果?

3 个答案:

答案 0 :(得分:1)

您需要在所有order by操作中加入group_concat()。这是"的本地"订单。它不适用于整个查询:

select Aid, group_concat(field order by internalOrder) as fields, 
       group_concat(value order b internalOrder) as values,
       group_concat(internalOrder order by internalOrder ASC) as internalOrders
from table1
group by Aid order by Aid;

另请注意,这与查询本身的order by是分开的。该订单对group_concat()中的订单没有一致的影响。

答案 1 :(得分:1)

尝试以下 -

select Aid,group_concat(field order by internalOrder ASC), 
group_concat(value order by internalOrder ASC), 
group_concat(internalOrder order by internalOrder ASC) 
from table1 group by Aid order by Aid;

答案 2 :(得分:0)

我认为这些sql对你有用。

select Aid,group_concat(field order by field), 
group_concat(value order by value), 
group_concat(internalOrder order by internalOrder ASC) 
from table1 group by Aid order by Aid;

谢谢..