我在数据库中有以下数据
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
哪个错了。
如何产生预期效果?
答案 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;
谢谢..