# # simple test of group_concat function # drop table if exists t1; create table t1 (grp int, a bigint unsigned, c char(10) not null, d char(10) not null); insert into t1 values (1,1,"a","a"); insert into t1 values (2,2,"b","a"); insert into t1 values (2,3,"c","b"); insert into t1 values (3,4,"E","a"); insert into t1 values (3,5,"C","b"); insert into t1 values (3,6,"D","b"); insert into t1 values (3,7,"d","d"); insert into t1 values (3,8,"d","d"); insert into t1 values (3,9,"D","c"); # Test of MySQL simple request select grp,group_concat(c) from t1 group by grp; select grp,group_concat(a,c) from t1 group by grp; select grp,group_concat("(",a,":",c,")") from t1 group by grp; # Test of MySQL with options select grp,group_concat(c separator ",") from t1 group by grp; select grp,group_concat(c separator "---->") from t1 group by grp; select grp,group_concat(c order by c) from t1 group by grp; select grp,group_concat(c order by c desc) from t1 group by grp; select grp,group_concat(d order by a) from t1 group by grp; select grp,group_concat(d order by a desc) from t1 group by grp; select grp,group_concat(a order by a,d+c) from t1 group by grp; select grp,group_concat(c order by 1) from t1 group by grp; select grp,group_concat(c order by "c") from t1 group by grp; select grp,group_concat(distinct c order by c) from t1 group by grp; select grp,group_concat(distinct c order by c desc) from t1 group by grp; select grp,group_concat(c order by c separator ",") from t1 group by grp; select grp,group_concat(c order by c desc separator ",") from t1 group by grp; select grp,group_concat(distinct c order by c separator ",") from t1 group by grp; select grp,group_concat(distinct c order by c desc separator ",") from t1 group by grp; # Test of SQL_LIST objects select grp,group_concat(c order by grp desc) from t1 group by grp order by grp; # Test transfer to real values select grp, group_concat(a separator "")+0 from t1 group by grp; select grp, group_concat(a separator "")+0.0 from t1 group by grp; select grp, ROUND(group_concat(a separator "")) from t1 group by grp; # Test NULL values drop table t1; create table t1 (grp int, c char(10)); insert into t1 values (1,NULL); insert into t1 values (2,"b"); insert into t1 values (2,NULL); insert into t1 values (3,"E"); insert into t1 values (3,NULL); insert into t1 values (3,"D"); insert into t1 values (3,NULL); insert into t1 values (3,NULL); insert into t1 values (3,"D"); insert into t1 values (4,""); insert into t1 values (5,NULL); select grp,group_concat(c order by c) from t1 group by grp; # Test warnings set group_concat_max_len = 5; select grp,group_concat(c) from t1 group by grp; show warnings; set group_concat_max_len = 1024; # Test variable length drop table if exists T_URL; create table T_URL ( URL_ID int(11), URL varchar(80)); drop table if exists T_REQUEST; create table T_REQUEST ( REQ_ID int(11), URL_ID int(11)); insert into T_URL values (4,'www.host.com'), (5,'www.google.com'),(5,'www.help.com'); insert into T_REQUEST values (1,4), (5,4), (5,5); select REQ_ID, Group_Concat(URL) as URL from T_URL, T_REQUEST where T_REQUEST.URL_ID = T_URL.URL_ID group by REQ_ID; drop table T_URL; drop table T_REQUEST; # Test errors --error 1111 select group_concat(sum(a)) from t1 group by grp; --error 1054 select grp,group_concat(c order by 2) from t1 group by grp; drop table t1;