2
# simple test of group_concat function
5
drop table if exists t1, t2;
8
create table t1 (grp int, a bigint unsigned, c char(10) not null, d char(10) not null);
9
insert into t1 values (1,1,"a","a");
10
insert into t1 values (2,2,"b","a");
11
insert into t1 values (2,3,"c","b");
12
insert into t1 values (3,4,"E","a");
13
insert into t1 values (3,5,"C","b");
14
insert into t1 values (3,6,"D","b");
15
insert into t1 values (3,7,"d","d");
16
insert into t1 values (3,8,"d","d");
17
insert into t1 values (3,9,"D","c");
19
# Test of MySQL simple request
20
select grp,group_concat(c) from t1 group by grp;
21
explain extended select grp,group_concat(c) from t1 group by grp;
22
select grp,group_concat(a,c) from t1 group by grp;
23
select grp,group_concat("(",a,":",c,")") from t1 group by grp;
25
# Test of MySQL with options
26
select grp,group_concat(c separator ",") from t1 group by grp;
27
select grp,group_concat(c separator "---->") from t1 group by grp;
28
select grp,group_concat(c order by c) from t1 group by grp;
29
select grp,group_concat(c order by c desc) from t1 group by grp;
30
select grp,group_concat(d order by a) from t1 group by grp;
31
select grp,group_concat(d order by a desc) from t1 group by grp;
33
select grp,group_concat(a order by a,d+c-ascii(c)-a) from t1 group by grp;
34
select grp,group_concat(a order by d+c-ascii(c),a) from t1 group by grp;
36
select grp,group_concat(c order by 1) from t1 group by grp;
37
select grp,group_concat(distinct c order by c) from t1 group by grp;
38
select grp,group_concat(distinct c order by c desc) from t1 group by grp;
39
explain extended select grp,group_concat(distinct c order by c desc) from t1 group by grp;
40
select grp,group_concat(c order by c separator ",") from t1 group by grp;
41
select grp,group_concat(c order by c desc separator ",") from t1 group by grp;
42
select grp,group_concat(distinct c order by c separator ",") from t1 group by grp;
43
explain extended select grp,group_concat(distinct c order by c separator ",") from t1 group by grp;
44
select grp,group_concat(distinct c order by c desc separator ",") from t1 group by grp;
46
# Test of SQL_LIST objects
47
select grp,group_concat(c order by grp desc) from t1 group by grp order by grp;
50
# Test transfer to real values
52
select grp, group_concat(a separator "")+0 from t1 group by grp;
53
select grp, group_concat(a separator "")+0.0 from t1 group by grp;
54
select grp, ROUND(group_concat(a separator "")) from t1 group by grp;
59
create table t1 (grp int, c char(10));
60
insert into t1 values (1,NULL),(2,"b"),(2,NULL),(3,"E"),(3,NULL),(3,"D"),(3,NULL),(3,NULL),(3,"D"),(4,""),(5,NULL);
61
select grp,group_concat(c order by c) from t1 group by grp;
65
set group_concat_max_len = 4;
66
select grp,group_concat(c) from t1 group by grp;
68
set group_concat_max_len = 1024;
73
select group_concat(sum(c)) from t1 group by grp;
75
select grp,group_concat(c order by 2) from t1 group by grp;
79
# Test variable length
81
create table t1 ( URL_ID int(11), URL varchar(80));
82
create table t2 ( REQ_ID int(11), URL_ID int(11));
83
insert into t1 values (4,'www.host.com'), (5,'www.google.com'),(5,'www.help.com');
84
insert into t2 values (1,4), (5,4), (5,5);
85
# Make this order independent
86
--replace_result www.help.com X www.host.com X www.google.com X
87
select REQ_ID, Group_Concat(URL) as URL from t1, t2 where
88
t2.URL_ID = t1.URL_ID group by REQ_ID;
89
# check min/max function
90
--replace_result www.help.com X www.host.com X www.google.com X
91
select REQ_ID, Group_Concat(URL) as URL, Min(t1.URL_ID) urll,
92
Max(t1.URL_ID) urlg from t1, t2 where t2.URL_ID = t1.URL_ID group by REQ_ID;
97
create table t1 (id int, name varchar(16));
98
insert into t1 values (1,'longername'),(1,'evenlongername');
99
select ifnull(group_concat(concat(t1.id, ':', t1.name)), 'shortname') as 'without distinct: how it should be' from t1;
100
select distinct ifnull(group_concat(concat(t1.id, ':', t1.name)), 'shortname') as 'with distinct: cutoff at length of shortname' from t1;
103
# check zero rows (bug#836)
104
create table t1(id int);
105
create table t2(id int);
106
insert into t1 values(0),(1);
107
select group_concat(t1.id) FROM t1,t2;
112
create table t1 (bar varchar(32));
113
insert into t1 values('test1'),('test2');
114
select group_concat(bar order by concat(bar,bar)) from t1;
115
select group_concat(bar order by concat(bar,bar) desc) from t1;
116
select bar from t1 having group_concat(bar)='';
117
select bar from t1 having instr(group_concat(bar), "test") > 0;
118
select bar from t1 having instr(group_concat(bar order by concat(bar,bar) desc), "test2,test1") > 0;
121
# ORDER BY fix_fields()
122
create table t1 (a int, a1 varchar(10));
123
create table t2 (a0 int);
124
insert into t1 values (0,"a"),(0,"b"),(1,"c");
125
insert into t2 values (1),(2),(3);
126
select group_concat(a1 order by (t1.a IN (select a0 from t2))) from t1;
127
select group_concat(a1 order by (t1.a)) from t1;
131
# Problem with GROUP BY (Bug #2695)
134
CREATE TABLE t1 (id1 tinyint(4) NOT NULL, id2 tinyint(4) NOT NULL);
135
INSERT INTO t1 VALUES (1, 1),(1, 2),(1, 3),(1, 4),(1, 5),(2, 1),(2, 2),(2, 3);
136
CREATE TABLE t2 (id1 tinyint(4) NOT NULL);
137
INSERT INTO t2 VALUES (1),(2),(3),(4),(5);
138
SELECT t1.id1, GROUP_CONCAT(t1.id2 ORDER BY t1.id2 ASC) AS concat_id FROM t1, t2 WHERE t1.id1 = t2.id1 AND t1.id1=1 GROUP BY t1.id1;
139
SELECT t1.id1, GROUP_CONCAT(t1.id2 ORDER BY t1.id2 ASC) AS concat_id FROM t1, t2 WHERE t1.id1 = t2.id1 GROUP BY t1.id1;
140
SELECT t1.id1, GROUP_CONCAT(t1.id2 ORDER BY t1.id2 DESC) AS concat_id FROM t1, t2 WHERE t1.id1 = t2.id1 GROUP BY t1.id1;
141
SELECT t1.id1, GROUP_CONCAT(t1.id2 ORDER BY 6-t1.id2 ASC) AS concat_id FROM t1, t2 WHERE t1.id1 = t2.id1 GROUP BY t1.id1;
143
# The following failed when it was run twice:
144
SELECT t1.id1, GROUP_CONCAT(t1.id2,6-t1.id2 ORDER BY 6-t1.id2 ASC) AS concat_id FROM t1, t2 WHERE t1.id1 = t2.id1 GROUP BY t1.id1;
145
SELECT t1.id1, GROUP_CONCAT(t1.id2,6-t1.id2 ORDER BY 6-t1.id2 ASC) AS concat_id FROM t1, t2 WHERE t1.id1 = t2.id1 GROUP BY t1.id1;
147
SELECT t1.id1, GROUP_CONCAT(t1.id2,"/",6-t1.id2 ORDER BY 1+0,6-t1.id2,t1.id2 ASC) AS concat_id FROM t1, t2 WHERE t1.id1 = t2.id1 GROUP BY t1.id1;
151
# Problem with distinct (Bug #3381)
154
create table t1 (s1 char(10), s2 int not null);
155
insert into t1 values ('a',2),('b',2),('c',1),('a',3),('b',4),('c',4);
156
select distinct s1 from t1 order by s2,s1;
157
select group_concat(distinct s1) from t1;
158
select group_concat(distinct s1 order by s2) from t1 where s2 < 4;
159
# The following is wrong and needs to be fixed ASAP
160
select group_concat(distinct s1 order by s2) from t1;
164
# Test with subqueries (Bug #3319)
167
create table t1 (a int, c int);
168
insert into t1 values (1, 2), (2, 3), (2, 4), (3, 5);
169
create table t2 (a int, c int);
170
insert into t2 values (1, 5), (2, 4), (3, 3), (3,3);
171
select group_concat(c) from t1;
172
select group_concat(c order by (select c from t2 where t2.a=t1.a limit 1)) as grp from t1;
173
select group_concat(c order by (select mid(group_concat(c order by a),1,5) from t2 where t2.a=t1.a)) as grp from t1;
174
select group_concat(c order by (select mid(group_concat(c order by a),1,5) from t2 where t2.a=t1.a) desc) as grp from t1;
175
select t1.a, group_concat(c order by (select c from t2 where t2.a=t1.a limit 1)) as grp from t1 group by 1;
176
select t1.a, group_concat(c order by (select mid(group_concat(c order by a),1,5) from t2 where t2.a=t1.a)) as grp from t1 group by 1;
177
select t1.a, group_concat(c order by (select mid(group_concat(c order by a),1,5) from t2 where t2.a=t1.a) desc) as grp from t1 group by 1;
179
# The following returns random results as we are sorting on blob addresses
180
select group_concat(c order by (select concat(5-t1.c,group_concat(c order by a)) from t2 where t2.a=t1.a)) as grp from t1;
181
select group_concat(c order by (select concat(t1.c,group_concat(c)) from t2 where a=t1.a)) as grp from t1;
183
select a,c,(select group_concat(c order by a) from t2 where a=t1.a) as grp from t1 order by grp;
187
# group_concat of expression with GROUP BY and external GROUP BY
189
CREATE TABLE t1 ( a int );
190
CREATE TABLE t2 ( a int );
191
INSERT INTO t1 VALUES (1), (2);
192
INSERT INTO t2 VALUES (1), (2);
193
SELECT GROUP_CONCAT(t1.a*t2.a ORDER BY t2.a) FROM t1, t2 GROUP BY t1.a;
197
# Bug #4035: group_concat() and HAVING
200
CREATE TABLE t1 (a char(4));
201
INSERT INTO t1 VALUES ('John'), ('Anna'), ('Bill');
202
SELECT GROUP_CONCAT(a SEPARATOR '||') AS names FROM t1
203
HAVING names LIKE '%An%';
204
SELECT GROUP_CONCAT(a SEPARATOR '###') AS names FROM t1
205
HAVING LEFT(names, 1) ='J';
212
CREATE TABLE t1 ( a int, b TEXT );
213
INSERT INTO t1 VALUES (1,'First Row'), (2,'Second Row');
214
SELECT GROUP_CONCAT(b ORDER BY b) FROM t1 GROUP BY a;
218
# check null values #2
221
CREATE TABLE t1 (A_ID INT NOT NULL,A_DESC CHAR(3) NOT NULL,PRIMARY KEY (A_ID));
222
INSERT INTO t1 VALUES (1,'ABC'), (2,'EFG'), (3,'HIJ');
223
CREATE TABLE t2 (A_ID INT NOT NULL,B_DESC CHAR(3) NOT NULL,PRIMARY KEY (A_ID,B_DESC));
224
INSERT INTO t2 VALUES (1,'A'),(1,'B'),(3,'F');
225
SELECT t1.A_ID, GROUP_CONCAT(t2.B_DESC) AS B_DESC FROM t1 LEFT JOIN t2 ON t1.A_ID=t2.A_ID GROUP BY t1.A_ID ORDER BY t1.A_DESC;
233
create table t1 (a int, b text);
234
insert into t1 values (1, 'bb'), (1, 'ccc'), (1, 'a'), (1, 'bb'), (1, 'ccc');
235
insert into t1 values (2, 'BB'), (2, 'CCC'), (2, 'A'), (2, 'BB'), (2, 'CCC');
236
select group_concat(b) from t1 group by a;
237
select group_concat(distinct b) from t1 group by a;
238
select group_concat(b order by b) from t1 group by a;
239
select group_concat(distinct b order by b) from t1 group by a;
240
set local group_concat_max_len=4;
241
select group_concat(b) from t1 group by a;
242
select group_concat(distinct b) from t1 group by a;
243
select group_concat(b order by b) from t1 group by a;
244
select group_concat(distinct b order by b) from t1 group by a;
250
insert into t1 values (1, concat(repeat('1', 300), '2')),
251
(1, concat(repeat('1', 300), '2')), (1, concat(repeat('0', 300), '1')),
252
(2, concat(repeat('1', 300), '2')), (2, concat(repeat('1', 300), '2')),
253
(2, concat(repeat('0', 300), '1'));
254
set local group_concat_max_len=1024;
255
select group_concat(b) from t1 group by a;
256
select group_concat(distinct b) from t1 group by a;
257
select group_concat(b order by b) from t1 group by a;
258
select group_concat(distinct b order by b) from t1 group by a;
259
set local group_concat_max_len=400;
260
select group_concat(b) from t1 group by a;
261
select group_concat(distinct b) from t1 group by a;
262
select group_concat(b order by b) from t1 group by a;
263
select group_concat(distinct b order by b) from t1 group by a;
270
create table t1 (a varchar(255) character set cp1250 collate cp1250_general_ci,
271
b varchar(255) character set koi8r);
272
insert into t1 values ('xxx','yyy');
273
select collation(a) from t1;
274
select collation(group_concat(a)) from t1;
275
create table t2 select group_concat(a) as a from t1;
276
show create table t2;
277
select collation(group_concat(a,_koi8r'test')) from t1;
279
select collation(group_concat(a,_koi8r 0xC1C2)) from t1;
281
select collation(group_concat(a,b)) from t1;
287
# Cannot convert the charset of a GROUP_CONCAT result
289
CREATE TABLE t1 (a CHAR(10) CHARACTER SET cp850);
290
INSERT INTO t1 VALUES ('�');
292
SELECT GROUP_CONCAT(a) FROM t1;
296
# bug #7769: group_concat returning null is checked in having
298
CREATE TABLE t1 (id int);
299
SELECT GROUP_CONCAT(id) AS gc FROM t1 HAVING gc IS NULL;
303
# Bug #8656: Crash with group_concat on alias in outer table
305
create table t2 (a int, b int);
306
insert into t2 values (1,1), (2,2);
307
select b x, (select group_concat(x) from t2) from t2;
311
# Bug #7405: problems with rollup
314
create table t1 (d int not null auto_increment,primary key(d), a int, b int, c int);
315
insert into t1(a,b) values (1,3), (1,4), (1,2), (2,7), (1,1), (1,2), (2,3), (2,3);
316
select d,a,b from t1 order by a;
317
explain select a, group_concat(b) from t1 group by a with rollup;
318
select a, group_concat(b) from t1 group by a with rollup;
319
select a, group_concat(distinct b) from t1 group by a with rollup;
320
select a, group_concat(b order by b) from t1 group by a with rollup;
321
select a, group_concat(distinct b order by b) from t1 group by a with rollup;
327
create table t1 (a char(3), b char(20), primary key (a, b));
328
insert into t1 values ('ABW', 'Dutch'), ('ABW', 'English');
329
select group_concat(a) from t1 group by b;
332
# Bug #12095: GROUP_CONCAT for one row table
336
aID smallint(5) unsigned NOT NULL auto_increment,
337
sometitle varchar(255) NOT NULL default '',
338
bID smallint(5) unsigned NOT NULL,
340
UNIQUE KEY sometitle (sometitle)
342
INSERT INTO t1 SET sometitle = 'title1', bID = 1;
343
INSERT INTO t1 SET sometitle = 'title2', bID = 1;
346
bID smallint(5) unsigned NOT NULL auto_increment,
347
somename varchar(255) NOT NULL default '',
349
UNIQUE KEY somename (somename)
351
INSERT INTO t2 SET somename = 'test';
353
SELECT COUNT(*), GROUP_CONCAT(DISTINCT t2.somename SEPARATOR ' |')
354
FROM t1 JOIN t2 ON t1.bID = t2.bID;
355
INSERT INTO t2 SET somename = 'test2';
356
SELECT COUNT(*), GROUP_CONCAT(DISTINCT t2.somename SEPARATOR ' |')
357
FROM t1 JOIN t2 ON t1.bID = t2.bID;
358
DELETE FROM t2 WHERE somename = 'test2';
359
SELECT COUNT(*), GROUP_CONCAT(DISTINCT t2.somename SEPARATOR ' |')
360
FROM t1 JOIN t2 ON t1.bID = t2.bID;
365
# Bug #12859 group_concat in subquery cause incorrect not null
367
create table t1 ( a int not null default 0);
368
select * from (select group_concat(a) from t1) t2;
369
select group_concat('x') UNION ALL select 1;
373
# Bug #12863 : missing separators after first empty cancatanated elements
376
CREATE TABLE t1 (id int, a varchar(9));
377
INSERT INTO t1 VALUES
378
(2, ''), (1, ''), (2, 'x'), (1, 'y'), (3, 'z'), (3, '');
380
SELECT GROUP_CONCAT(a) FROM t1;
381
SELECT GROUP_CONCAT(a ORDER BY a) FROM t1;
383
SELECT GROUP_CONCAT(a) FROM t1 GROUP BY id;
384
SELECT GROUP_CONCAT(a ORDER BY a) FROM t1 GROUP BY id;
389
# Bug #15560: GROUP_CONCAT wasn't ready for WITH ROLLUP queries
391
create table t1(f1 int);
392
insert into t1 values(1),(2),(3);
393
select f1, group_concat(f1+1) from t1 group by f1 with rollup;
394
select count(distinct (f1+1)) from t1 group by f1 with rollup;
398
# Bug#14169 type of group_concat() result changed to blob if tmp_table was used
400
create table t1 (f1 int unsigned, f2 varchar(255));
401
insert into t1 values (1,repeat('a',255)),(2,repeat('b',255));
403
select f2,group_concat(f1) from t1 group by f2;
410
# Bug#8568 "GROUP_CONCAT returns string, unless in a UNION in which case
411
# returns BLOB": add a test case, the bug can not be repeated any more.
415
create table t1 (a char, b char);
416
insert into t1 values ('a', 'a'), ('a', 'b'), ('b', 'a'), ('b', 'b');
417
create table t2 select group_concat(b) as a from t1 where a = 'a';
418
create table t3 (select group_concat(a) as a from t1 where a = 'a') union
419
(select group_concat(b) as a from t1 where a = 'b');
420
select charset(a) from t2;
421
select charset(a) from t3;
422
drop table t1, t2, t3;
426
# Bug#18281 group_concat changes charset to binary
428
create table t1 (c1 varchar(10), c2 int);
429
select charset(group_concat(c1 order by c2)) from t1;
433
# Bug #16712: group_concat returns odd string instead of intended result
435
CREATE TABLE t1 (a INT(10), b LONGTEXT, PRIMARY KEY (a));
437
SET GROUP_CONCAT_MAX_LEN = 20000000;
439
INSERT INTO t1 VALUES (1,REPEAT(CONCAT('A',CAST(CHAR(0) AS BINARY),'B'), 40000));
440
INSERT INTO t1 SELECT a + 1, b FROM t1;
442
SELECT a, CHAR_LENGTH(b) FROM t1;
443
SELECT CHAR_LENGTH( GROUP_CONCAT(b) ) FROM t1;
444
SET GROUP_CONCAT_MAX_LEN = 1024;
448
# Bug #22015: crash with GROUP_CONCAT over a derived table that
449
# returns the results of aggregation by GROUP_CONCAT
452
CREATE TABLE t1 (a int, b int);
454
INSERT INTO t1 VALUES (2,1), (1,2), (2,2), (1,3);
456
SELECT GROUP_CONCAT(a), x
457
FROM (SELECT a, GROUP_CONCAT(b) x FROM t1 GROUP BY a) AS s
462
# Bug#23451 GROUP_CONCAT truncates a multibyte utf8 character
467
x text character set utf8 not null,
470
insert into t1 values (repeat('a', 1022), 0), (repeat(_utf8 0xc3b7, 4), 0);
474
eval set group_concat_max_len= 1022 + $1;
476
select @x:=group_concat(x) from t1 group by y;
478
select @@group_concat_max_len, length(@x), char_length(@x), right(@x,12), right(HEX(@x),12);
482
set group_concat_max_len=1024;
486
# Bug#14169 type of group_concat() result changed to blob if tmp_table was used
488
create table t1 (f1 int unsigned, f2 varchar(255));
489
insert into t1 values (1,repeat('a',255)),(2,repeat('b',255));
491
select f2,group_concat(f1) from t1 group by f2;
496
# Bug #26815: Unexpected built-in function behavior: group_concat(distinct
499
CREATE TABLE t1(a TEXT, b CHAR(20));
500
INSERT INTO t1 VALUES ("one.1","one.1"),("two.2","two.2"),("one.3","one.3");
501
SELECT GROUP_CONCAT(DISTINCT UCASE(a)) FROM t1;
502
SELECT GROUP_CONCAT(DISTINCT UCASE(b)) FROM t1;
506
# Bug #28273: GROUP_CONCAT and ORDER BY: No warning when result gets truncated.
508
CREATE TABLE t1( a VARCHAR( 10 ), b INT );
509
INSERT INTO t1 VALUES ( repeat( 'a', 10 ), 1),
510
( repeat( 'b', 10 ), 2);
511
SET group_concat_max_len = 20;
512
SELECT GROUP_CONCAT( a ) FROM t1;
513
SELECT GROUP_CONCAT( DISTINCT a ) FROM t1;
514
SELECT GROUP_CONCAT( a ORDER BY b ) FROM t1;
515
SELECT GROUP_CONCAT( DISTINCT a ORDER BY b ) FROM t1;
516
SET group_concat_max_len = DEFAULT;
518
# Bug #23856:GROUP_CONCAT and ORDER BY: junk from previous rows for query on I_S
520
SET group_concat_max_len= 65535;
521
CREATE TABLE t1( a TEXT, b INTEGER );
522
INSERT INTO t1 VALUES ( 'a', 0 ), ( 'b', 1 );
523
SELECT GROUP_CONCAT( a ORDER BY b ) FROM t1;
524
SELECT GROUP_CONCAT(DISTINCT a ORDER BY b) FROM t1;
525
SELECT GROUP_CONCAT(DISTINCT a) FROM t1;
526
SET group_concat_max_len= 10;
527
SELECT GROUP_CONCAT(a ORDER BY b) FROM t1;
528
SELECT GROUP_CONCAT(DISTINCT a ORDER BY b) FROM t1;
529
SELECT GROUP_CONCAT(DISTINCT a) FROM t1;
531
SET group_concat_max_len= 65535;
532
CREATE TABLE t2( a TEXT );
533
INSERT INTO t2 VALUES( REPEAT( 'a', 5000 ) );
534
INSERT INTO t2 VALUES( REPEAT( 'b', 5000 ) );
535
INSERT INTO t2 VALUES( REPEAT( 'a', 5000 ) );
536
SELECT LENGTH( GROUP_CONCAT( DISTINCT a ) ) FROM t2;
538
CREATE TABLE t3( a TEXT, b INT );
539
INSERT INTO t3 VALUES( REPEAT( 'a', 65534 ), 1 );
540
INSERT INTO t3 VALUES( REPEAT( 'a', 65535 ), 2 );
541
INSERT INTO t3 VALUES( REPEAT( 'a', 65533 ), 3 );
542
SELECT LENGTH( GROUP_CONCAT( a ) ) FROM t3 WHERE b = 1;
543
SELECT LENGTH( GROUP_CONCAT( a ) ) FROM t3 WHERE b = 2;
544
SELECT LENGTH( GROUP_CONCAT( a ) ) FROM t3 WHERE b = 3;
546
SET group_concat_max_len= DEFAULT;
547
DROP TABLE t1, t2, t3;
550
# Bug#29850: Wrong charset of the GROUP_CONCAT result when the select employs
554
create table t1 (id int, name varchar(20)) DEFAULT CHARSET=utf8;
555
insert into t1 (id, name) values (1, "�ra");
556
insert into t1 (id, name) values (2, "�ra");
557
select b.id, group_concat(b.name) from t1 a, t1 b group by b.id;
561
# Bug #31154: group_concat() and bit fields;
563
create table t1(a bit not null default 0);
564
insert into t1 values (), (), ();
565
select group_concat(distinct a) from t1;
566
select group_concat(distinct a order by a) from t1;
569
create table t1(a bit(2) not null);
570
insert into t1 values (1), (0), (0), (3), (1);
571
select group_concat(distinct a) from t1;
572
select group_concat(distinct a order by a) from t1;
573
select group_concat(distinct a order by a desc) from t1;
576
create table t1(a bit(2), b varchar(10), c bit);
577
insert into t1 values (1, 'a', 0), (0, 'b', 1), (0, 'c', 0), (3, 'd', 1),
578
(1, 'e', 1), (3, 'f', 1), (0, 'g', 1);
579
select group_concat(distinct a, c) from t1;
580
select group_concat(distinct a, c order by a) from t1;
581
select group_concat(distinct a, c) from t1;
582
select group_concat(distinct a, c order by a, c) from t1;
583
select group_concat(distinct a, c order by a desc, c desc) from t1;
589
# Bug#30897 GROUP_CONCAT returns extra comma on empty fields
591
create table t1 (f1 char(20));
592
insert into t1 values (''),('');
593
select group_concat(distinct f1) from t1;
594
select group_concat(f1) from t1;
596
# Bug#32798: DISTINCT in GROUP_CONCAT clause fails when ordering by a column
599
CREATE TABLE t1 (a INT, b INT);
601
INSERT INTO t1 VALUES (1, 1), (2, 2), (2, 3);
603
SELECT GROUP_CONCAT(DISTINCT a ORDER BY b) FROM t1;
604
SELECT GROUP_CONCAT(DISTINCT a ORDER BY b DESC) FROM t1;
605
SELECT GROUP_CONCAT(DISTINCT a) FROM t1;
607
SELECT GROUP_CONCAT(DISTINCT a + 1 ORDER BY 3 - b) FROM t1;
608
SELECT GROUP_CONCAT(DISTINCT a + 1 ORDER BY b) FROM t1;
609
SELECT GROUP_CONCAT(a ORDER BY 3 - b) FROM t1;
611
CREATE TABLE t2 (a INT, b INT, c INT, d INT);
613
# There is one duplicate in the expression list: 1,10
614
# There is one duplicate in ORDER BY list, but that shouldnt matter: 1,10
615
INSERT INTO t2 VALUES (1,1, 1,1), (1,1, 2,2), (1,2, 2,1), (2,1, 1,2);
617
SELECT GROUP_CONCAT(DISTINCT a, b ORDER BY c, d) FROM t2;
618
SELECT GROUP_CONCAT(DISTINCT a, b ORDER BY d, c) FROM t2;
620
CREATE TABLE t3 (a INT, b INT, c INT);
622
INSERT INTO t3 VALUES (1, 1, 1), (2, 1, 2), (3, 2, 1);
624
SELECT GROUP_CONCAT(DISTINCT a, b ORDER BY b, c) FROM t3;
625
SELECT GROUP_CONCAT(DISTINCT a, b ORDER BY c, b) FROM t3;
627
SELECT GROUP_CONCAT(DISTINCT a, b ORDER BY a, b) FROM t1;
628
SELECT GROUP_CONCAT(DISTINCT b, a ORDER BY a, b) FROM t1;
629
SELECT GROUP_CONCAT(DISTINCT a, b ORDER BY b, a) FROM t1;
630
SELECT GROUP_CONCAT(DISTINCT b, a ORDER BY a, b) FROM t1;
631
SELECT GROUP_CONCAT(DISTINCT a ORDER BY a, b) FROM t1;
632
SELECT GROUP_CONCAT(DISTINCT b ORDER BY b, a) FROM t1;
633
SELECT GROUP_CONCAT(DISTINCT a, b ORDER BY a) FROM t1;
634
SELECT GROUP_CONCAT(DISTINCT b, a ORDER BY b) FROM t1;
636
DROP TABLE t1, t2, t3;
639
# Bug #34747: crash in debug assertion check after derived table
641
CREATE TABLE t1(a INT);
642
INSERT INTO t1 VALUES (),();
647
GROUP_CONCAT(DISTINCT t1.a) AS d2
655
--echo End of 5.0 tests