2 nidafg nidafg 于 2015.06.02 19:11 提问

mysql查询时使用聚合函数拼接字段

我在mysql中查询一个列表,使用了groupconcat函数聚合某些字段。效果如下:
id rescode fieldA fieldB

001 00-A-001 valA1,valA2 valB1,valB2
其中fieldA 和fieldB字段的值被聚合,默认用,连接起来了。由于这两个字段是left join另一个表查出来的,和主表记录是多对一的。所以我想查询时把这两个字段合并成一个字段拼接起来,按这种格式:{valA1,valB1},{valA2,valB2},也就是按顺序对应起来。是不是应该自己写一个函数实现?应该怎么写?

2个回答

danielinbiti
danielinbiti   Ds   Rxr 2015.06.02 22:32

前面连表的时候现拼接,再group concat

 create table tmain(
id varchar(50),
rescode  varchar(50)
);
create table tdetail(
id varchar(50),
fieldA  varchar(50),
fieldB varchar(50)
);
insert into tmain(id,rescode) values('001','00-A-001');
insert into tdetail(id,fieldA,fieldB) values('001','valA1','valB1');
insert into tdetail(id,fieldA,fieldB) values('001','valA2','valB2');
select tmain.*,GROUP_CONCAT(concat('{',tdetail.fieldA ,',',tdetail.fieldB , '}')) from  
tmain left join tdetail on tmain.id=tdetail.id group by id,rescode
devmiao
devmiao   Ds   Rxr 2015.06.02 20:58
Csdn user default icon
上传中...
上传图片
插入图片