4

是我的小提琴。

表和数据是

create table Table3 (MatchID varchar(10), ItemType varchar(10));
insert into Table3 values
('M001','Fruit'),
('M001','Animal'),
('M002','Fruit'),
('M002','Vehicle');

当您有一个按 MatchID 和 ItemType 排序的选择查询时,它会返回

select MatchID,ItemType from Table3 order by MatchID,ItemType;

    MATCHID ITEMTYPE
    M001    Animal
    M001    Fruit
    M002    Fruit
    M002    Vehicle

像这样,这是预期的和正确的。

但是,当我 group_concated 时,它没有以有序的方式返回。

Select group_concat(ItemType) as typesTomatch ,MatchID
from (select MatchID,ItemType from Table3 
      order by MatchID,ItemType)
c group by MatchID;

它正在返回

TYPESTOMATCH    MATCHID
Fruit,Animal    M001
Fruit,Vehicle   M002

与预期相反

TYPESTOMATCH    MATCHID
Animal,Fruit    M001
Fruit,Vehicle   M002

. 为什么 group_concat 的行为如此?如何产生预期的输出?

4

1 回答 1

7

ORDER BY在里面试试GROUP_CONCAT()

SELECT GROUP_CONCAT(ItemType ORDER BY ItemType) AS typesTomatch , MatchID
FROM Table3 GROUP BY MatchID;

看到这个 SQLFiddle

于 2013-07-25T06:29:35.020 回答