~posulliv/drizzle/optimizer-style-cleanup

« back to all changes in this revision

Viewing changes to tests/r/pbxt/group_by.result

  • Committer: Padraig O'Sullivan
  • Date: 2010-04-17 01:38:47 UTC
  • mfrom: (1237.9.238 bad-staging)
  • Revision ID: osullivan.padraig@gmail.com-20100417013847-ibjioqsfbmf5yg4g
Merge trunk.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
drop table if exists t1,t2,t3;
 
2
SELECT 1 FROM (SELECT 1) as a  GROUP BY SUM(1);
 
3
ERROR HY000: Invalid use of group function
 
4
CREATE TABLE t1 (
 
5
spID int,
 
6
userID int,
 
7
score int,
 
8
lsg char(40),
 
9
date date
 
10
);
 
11
INSERT INTO t1 VALUES (1,1,1,'',NULL);
 
12
INSERT INTO t1 VALUES (2,2,2,'',NULL);
 
13
INSERT INTO t1 VALUES (2,1,1,'',NULL);
 
14
INSERT INTO t1 VALUES (3,3,3,'',NULL);
 
15
CREATE TABLE t2 (
 
16
userID int NOT NULL auto_increment,
 
17
niName char(15),
 
18
passwd char(8),
 
19
mail char(50),
 
20
isAukt enum('N','Y') DEFAULT 'N',
 
21
vName char(30),
 
22
nName char(40),
 
23
adr char(60),
 
24
plz char(5),
 
25
ort char(35),
 
26
land char(20),
 
27
PRIMARY KEY (userID)
 
28
);
 
29
INSERT INTO t2 VALUES (1,'name','pass','mail','Y','v','n','adr','1','1','1');
 
30
INSERT INTO t2 VALUES (2,'name','pass','mail','Y','v','n','adr','1','1','1');
 
31
INSERT INTO t2 VALUES (3,'name','pass','mail','Y','v','n','adr','1','1','1');
 
32
INSERT INTO t2 VALUES (4,'name','pass','mail','Y','v','n','adr','1','1','1');
 
33
INSERT INTO t2 VALUES (5,'name','pass','mail','Y','v','n','adr','1','1','1');
 
34
SELECT t2.userid, MIN(t1.score) FROM t1, t2 WHERE t1.userID=t2.userID GROUP BY t2.userid;
 
35
userid  MIN(t1.score)
 
36
1       1
 
37
2       2
 
38
3       3
 
39
SELECT t2.userid, MIN(t1.score) FROM t1, t2 WHERE t1.userID=t2.userID GROUP BY t2.userid ORDER BY NULL;
 
40
userid  MIN(t1.score)
 
41
1       1
 
42
2       2
 
43
3       3
 
44
SELECT t2.userid, MIN(t1.score) FROM t1, t2 WHERE t1.userID=t2.userID AND t1.spID=2  GROUP BY t2.userid;
 
45
userid  MIN(t1.score)
 
46
1       1
 
47
2       2
 
48
SELECT t2.userid, MIN(t1.score+0.0) FROM t1, t2 WHERE t1.userID=t2.userID AND t1.spID=2  GROUP BY t2.userid;
 
49
userid  MIN(t1.score+0.0)
 
50
1       1.0
 
51
2       2.0
 
52
SELECT t2.userid, MIN(t1.score+0.0) FROM t1, t2 WHERE t1.userID=t2.userID AND t1.spID=2  GROUP BY t2.userid ORDER BY NULL;
 
53
userid  MIN(t1.score+0.0)
 
54
2       2.0
 
55
1       1.0
 
56
EXPLAIN SELECT t2.userid, MIN(t1.score+0.0) FROM t1, t2 WHERE t1.userID=t2.userID AND t1.spID=2  GROUP BY t2.userid ORDER BY NULL;
 
57
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
58
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    4       Using where; Using temporary
 
59
1       SIMPLE  t2      eq_ref  PRIMARY PRIMARY 4       test.t1.userID  1       
 
60
drop table t1,t2;
 
61
CREATE TABLE t1 (
 
62
PID int NOT NULL auto_increment,
 
63
payDate date,
 
64
recDate datetime,
 
65
URID int DEFAULT '0' NOT NULL,
 
66
CRID int DEFAULT '0' NOT NULL,
 
67
amount int DEFAULT '0' NOT NULL,
 
68
operator int,
 
69
method enum('unknown','cash','dealer','check','card','lazy','delayed','test') DEFAULT 'unknown' NOT NULL,
 
70
DIID int,
 
71
reason char(1) DEFAULT '' NOT NULL,
 
72
code_id int,
 
73
qty int DEFAULT '0' NOT NULL,
 
74
PRIMARY KEY (PID),
 
75
KEY URID (URID),
 
76
KEY reason (reason),
 
77
KEY method (method),
 
78
KEY payDate (payDate)
 
79
);
 
80
INSERT INTO t1 VALUES (1,'1970-01-01','1997-10-17 00:00:00',2529,1,21000,11886,'check',0,'F',16200,6);
 
81
SELECT COUNT(P.URID),SUM(P.amount),P.method, MIN(PP.recdate+0) > 19980501000000   AS IsNew FROM t1 AS P JOIN t1 as PP WHERE P.URID = PP.URID GROUP BY method,IsNew;
 
82
ERROR 42000: Can't group on 'IsNew'
 
83
drop table t1;
 
84
CREATE TABLE t1 (
 
85
cid int NOT NULL auto_increment,
 
86
firstname varchar(32) DEFAULT '' NOT NULL,
 
87
surname varchar(32) DEFAULT '' NOT NULL,
 
88
PRIMARY KEY (cid)
 
89
);
 
90
INSERT INTO t1 VALUES (1,'That','Guy');
 
91
INSERT INTO t1 VALUES (2,'Another','Gent');
 
92
CREATE TABLE t2 (
 
93
call_id int NOT NULL auto_increment,
 
94
contact_id int DEFAULT '0' NOT NULL,
 
95
PRIMARY KEY (call_id),
 
96
KEY contact_id (contact_id)
 
97
);
 
98
INSERT INTO t2 VALUES (10,2);
 
99
INSERT INTO t2 VALUES (18,2);
 
100
INSERT INTO t2 VALUES (62,2);
 
101
INSERT INTO t2 VALUES (91,2);
 
102
INSERT INTO t2 VALUES (92,2);
 
103
SELECT cid, CONCAT(firstname, ' ', surname), COUNT(call_id) FROM t1 LEFT JOIN t2 ON cid=contact_id WHERE firstname like '%foo%' GROUP BY cid;
 
104
cid     CONCAT(firstname, ' ', surname) COUNT(call_id)
 
105
SELECT cid, CONCAT(firstname, ' ', surname), COUNT(call_id) FROM t1 LEFT JOIN t2 ON cid=contact_id WHERE firstname like '%foo%' GROUP BY cid ORDER BY NULL;
 
106
cid     CONCAT(firstname, ' ', surname) COUNT(call_id)
 
107
SELECT cid, CONCAT(firstname, ' ', surname), COUNT(call_id) FROM t1 LEFT JOIN t2 ON cid=contact_id WHERE firstname like '%foo%' GROUP BY cid ORDER BY surname, firstname;
 
108
cid     CONCAT(firstname, ' ', surname) COUNT(call_id)
 
109
drop table t2;
 
110
drop table t1;
 
111
create table t1 (foo int);
 
112
insert into t1 values (1);
 
113
select 1+1, "a",count(*) from t1 where foo in (2);
 
114
1+1     a       count(*)
 
115
2       a       0
 
116
insert into t1 values (1);
 
117
select 1+1,"a",count(*) from t1 where foo in (2);
 
118
1+1     a       count(*)
 
119
2       a       0
 
120
drop table t1;
 
121
CREATE TABLE t1 (
 
122
spID int,
 
123
userID int,
 
124
score int,
 
125
key (spid),
 
126
key (score)
 
127
);
 
128
INSERT INTO t1 VALUES (1,1,1),(2,2,2),(2,1,1),(3,3,3),(4,3,3),(5,3,3),(6,3,3),(7,3,3);
 
129
explain select userid,count(*) from t1 group by userid desc;
 
130
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
131
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    8       Using temporary; Using filesort
 
132
explain select userid,count(*) from t1 group by userid desc order by null;
 
133
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
134
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    8       Using temporary
 
135
select userid,count(*) from t1 group by userid desc;
 
136
userid  count(*)
 
137
3       5
 
138
2       1
 
139
1       2
 
140
select userid,count(*) from t1 group by userid desc having (count(*)+1) IN (4,3);
 
141
userid  count(*)
 
142
1       2
 
143
select userid,count(*) from t1 group by userid desc having 3  IN (1,COUNT(*));
 
144
userid  count(*)
 
145
explain select spid,count(*) from t1 where spid between 1 and 2 group by spid desc;
 
146
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
147
1       SIMPLE  t1      ALL     spID    NULL    NULL    NULL    8       Using where; Using temporary; Using filesort
 
148
explain select spid,count(*) from t1 where spid between 1 and 2 group by spid;
 
149
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
150
1       SIMPLE  t1      ALL     spID    NULL    NULL    NULL    8       Using where; Using temporary; Using filesort
 
151
explain select spid,count(*) from t1 where spid between 1 and 2 group by spid order by null;
 
152
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
153
1       SIMPLE  t1      ALL     spID    NULL    NULL    NULL    8       Using where; Using temporary
 
154
select spid,count(*) from t1 where spid between 1 and 2 group by spid;
 
155
spid    count(*)
 
156
1       1
 
157
2       2
 
158
select spid,count(*) from t1 where spid between 1 and 2 group by spid desc;
 
159
spid    count(*)
 
160
2       2
 
161
1       1
 
162
explain extended select sql_big_result spid,sum(userid) from t1 group by spid desc;
 
163
id      select_type     table   type    possible_keys   key     key_len ref     rows    filtered        Extra
 
164
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    8       100.00  Using filesort
 
165
Warnings:
 
166
Note    1003    select sql_big_result `test`.`t1`.`spID` AS `spid`,sum(`test`.`t1`.`userID`) AS `sum(userid)` from `test`.`t1` group by `test`.`t1`.`spID` desc
 
167
explain select sql_big_result spid,sum(userid) from t1 group by spid desc order by null;
 
168
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
169
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    8       Using filesort
 
170
select sql_big_result spid,sum(userid) from t1 group by spid desc;
 
171
spid    sum(userid)
 
172
7       3
 
173
6       3
 
174
5       3
 
175
4       3
 
176
3       3
 
177
2       3
 
178
1       1
 
179
explain select sql_big_result score,count(*) from t1 group by score desc;
 
180
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
181
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    8       Using filesort
 
182
explain select sql_big_result score,count(*) from t1 group by score desc order by null;
 
183
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
184
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    8       Using filesort
 
185
select sql_big_result score,count(*) from t1 group by score desc;
 
186
score   count(*)
 
187
3       5
 
188
2       1
 
189
1       2
 
190
drop table t1;
 
191
create table t1 (a date default null, b date default null);
 
192
insert t1 values ('1999-10-01','2000-01-10'), ('1997-01-01','1998-10-01');
 
193
select a,min(b) c,count(distinct rand()) from t1 group by a having c<a + interval 1 day;
 
194
a       c       count(distinct rand())
 
195
drop table t1;
 
196
CREATE TABLE t1 (a char(1));
 
197
INSERT INTO t1 VALUES ('A'),('B'),('A'),('B'),('A'),('B'),(NULL),('a'),('b'),(NULL),('A'),('B'),(NULL);
 
198
SELECT a FROM t1 GROUP BY a;
 
199
a
 
200
NULL
 
201
A
 
202
B
 
203
SELECT a,count(*) FROM t1 GROUP BY a;
 
204
a       count(*)
 
205
NULL    3
 
206
A       5
 
207
B       5
 
208
SELECT a FROM t1 GROUP BY a;
 
209
a
 
210
NULL
 
211
A
 
212
B
 
213
SELECT a,count(*) FROM t1 GROUP BY a;
 
214
a       count(*)
 
215
NULL    3
 
216
A       5
 
217
B       5
 
218
SELECT a FROM t1 GROUP BY 1;
 
219
a
 
220
NULL
 
221
A
 
222
B
 
223
SELECT a,count(*) FROM t1 GROUP BY 1;
 
224
a       count(*)
 
225
NULL    3
 
226
A       5
 
227
B       5
 
228
SELECT a FROM t1 GROUP BY a;
 
229
a
 
230
NULL
 
231
A
 
232
B
 
233
SELECT a,count(*) FROM t1 GROUP BY a;
 
234
a       count(*)
 
235
NULL    3
 
236
A       5
 
237
B       5
 
238
SELECT a FROM t1 GROUP BY a;
 
239
a
 
240
NULL
 
241
A
 
242
B
 
243
SELECT a,count(*) FROM t1 GROUP BY a;
 
244
a       count(*)
 
245
NULL    3
 
246
A       5
 
247
B       5
 
248
SELECT a FROM t1 GROUP BY 1;
 
249
a
 
250
NULL
 
251
A
 
252
B
 
253
SELECT a,count(*) FROM t1 GROUP BY 1;
 
254
a       count(*)
 
255
NULL    3
 
256
A       5
 
257
B       5
 
258
drop table t1;
 
259
CREATE TABLE t1 (
 
260
`a` char(193) default NULL,
 
261
`b` char(63) default NULL
 
262
);
 
263
INSERT INTO t1 VALUES ('abc','def'),('hij','klm');
 
264
SELECT CONCAT(a, b) FROM t1 GROUP BY 1;
 
265
CONCAT(a, b)
 
266
abcdef
 
267
hijklm
 
268
SELECT CONCAT(a, b),count(*) FROM t1 GROUP BY 1;
 
269
CONCAT(a, b)    count(*)
 
270
abcdef  1
 
271
hijklm  1
 
272
SELECT CONCAT(a, b),count(distinct a) FROM t1 GROUP BY 1;
 
273
CONCAT(a, b)    count(distinct a)
 
274
abcdef  1
 
275
hijklm  1
 
276
SELECT 1 FROM t1 GROUP BY CONCAT(a, b);
 
277
1
 
278
1
 
279
1
 
280
INSERT INTO t1 values ('hij','klm');
 
281
SELECT CONCAT(a, b),count(*) FROM t1 GROUP BY 1;
 
282
CONCAT(a, b)    count(*)
 
283
abcdef  1
 
284
hijklm  2
 
285
DROP TABLE t1;
 
286
create table t1 (One int, Two int, Three int, Four int);
 
287
insert into t1 values (1,2,1,4),(1,2,2,4),(1,2,3,4),(1,2,4,4),(1,1,1,4),(1,1,2,4),(1,1,3,4),(1,1,4,4),(1,3,1,4),(1,3,2,4),(1,3,3,4),(1,3,4,4);
 
288
select One, Two, sum(Four) from t1 group by One,Two;
 
289
One     Two     sum(Four)
 
290
1       1       16
 
291
1       2       16
 
292
1       3       16
 
293
drop table t1;
 
294
create table t1 (id integer primary key not null auto_increment, gender char(1));
 
295
insert into t1 values (NULL, 'M'), (NULL, 'F'),(NULL, 'F'),(NULL, 'F'),(NULL, 'M');
 
296
create table t2 (user_id integer not null, date date);
 
297
insert into t2 values (1, '2002-06-09'),(2, '2002-06-09'),(1, '2002-06-09'),(3, '2002-06-09'),(4, '2002-06-09'),(4, '2002-06-09');
 
298
select u.gender as gender, count(distinct  u.id) as dist_count, (count(distinct u.id)/5*100) as percentage from t1 u, t2 l where l.user_id = u.id group by u.gender;
 
299
gender  dist_count      percentage
 
300
F       3       60.0000
 
301
M       1       20.0000
 
302
select u.gender as  gender, count(distinct  u.id) as dist_count, (count(distinct u.id)/5*100) as percentage from t1 u, t2 l where l.user_id = u.id group by u.gender  order by percentage;
 
303
gender  dist_count      percentage
 
304
M       1       20.0000
 
305
F       3       60.0000
 
306
drop table t1,t2;
 
307
CREATE TABLE t1 (ID1 int, ID2 int, ID int NOT NULL AUTO_INCREMENT,PRIMARY KEY(ID
 
308
));
 
309
insert into t1 values (1,244,NULL),(2,243,NULL),(134,223,NULL),(185,186,NULL);
 
310
select S.ID as xID, S.ID1 as xID1 from t1 as S left join t1 as yS  on S.ID1 between yS.ID1 and yS.ID2;
 
311
xID     xID1
 
312
1       1
 
313
2       2
 
314
2       2
 
315
3       134
 
316
3       134
 
317
3       134
 
318
4       185
 
319
4       185
 
320
4       185
 
321
4       185
 
322
select S.ID as xID, S.ID1 as xID1, repeat('*',count(distinct yS.ID)) as Level from t1 as S left join t1 as yS  on S.ID1 between yS.ID1 and yS.ID2 group by xID order by xID1;
 
323
xID     xID1    Level
 
324
1       1       *
 
325
2       2       **
 
326
3       134     ***
 
327
4       185     ****
 
328
drop table t1;
 
329
CREATE TEMPORARY TABLE t1 (
 
330
pid int NOT NULL default '0',
 
331
c1id int default NULL,
 
332
c2id int default NULL,
 
333
value int NOT NULL default '0',
 
334
UNIQUE KEY pid2 (pid,c1id,c2id),
 
335
UNIQUE KEY pid (pid,value)
 
336
) ENGINE=MyISAM;
 
337
INSERT INTO t1 VALUES (1, 1, NULL, 1),(1, 2, NULL, 2),(1, NULL, 3, 3),(1, 4, NULL, 4),(1, 5, NULL, 5);
 
338
CREATE TEMPORARY TABLE t2 (
 
339
id int NOT NULL default '0',
 
340
active enum('Yes','No') NOT NULL default 'Yes',
 
341
PRIMARY KEY  (id)
 
342
) ENGINE=MyISAM;
 
343
INSERT INTO t2 VALUES (1, 'Yes'),(2, 'No'),(4, 'Yes'),(5, 'No');
 
344
CREATE TABLE t3 (
 
345
id int NOT NULL default '0',
 
346
active enum('Yes','No') NOT NULL default 'Yes',
 
347
PRIMARY KEY  (id)
 
348
);
 
349
INSERT INTO t3 VALUES (3, 'Yes');
 
350
select * from t1 AS m LEFT JOIN t2 AS c1 ON m.c1id = 
 
351
c1.id AND c1.active = 'Yes' LEFT JOIN t3 AS c2 ON m.c2id = c2.id AND 
 
352
c2.active = 'Yes' WHERE m.pid=1  AND (c1.id IS NOT NULL OR c2.id IS NOT NULL);
 
353
pid     c1id    c2id    value   id      active  id      active
 
354
1       1       NULL    1       1       Yes     NULL    NULL
 
355
1       NULL    3       3       NULL    NULL    3       Yes
 
356
1       4       NULL    4       4       Yes     NULL    NULL
 
357
select max(value) from t1 AS m LEFT JOIN t2 AS c1 ON 
 
358
m.c1id = c1.id AND c1.active = 'Yes' LEFT JOIN t3 AS c2 ON m.c2id = 
 
359
c2.id AND c2.active = 'Yes' WHERE m.pid=1  AND (c1.id IS NOT NULL OR c2.id IS 
 
360
NOT NULL);
 
361
max(value)
 
362
4
 
363
drop table t1,t2,t3;
 
364
create table t1 (a blob null);
 
365
insert into t1 values (NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(NULL),(""),(""),(""),("b");
 
366
select a,count(*) from t1 group by a;
 
367
a       count(*)
 
368
NULL    9
 
369
        3
 
370
b       1
 
371
select a,count(*) from t1 group by a;
 
372
a       count(*)
 
373
NULL    9
 
374
        3
 
375
b       1
 
376
drop table t1;
 
377
create table t1 (a int not null, b int not null);
 
378
insert into t1 values (1,1),(1,2),(3,1),(3,2),(2,2),(2,1);
 
379
create table t2 (a int not null, b int not null, key(a));
 
380
insert into t2 values (1,3),(3,1),(2,2),(1,1);
 
381
select t1.a,t2.b from t1,t2 where t1.a=t2.a group by t1.a,t2.b;
 
382
a       b
 
383
1       1
 
384
1       3
 
385
2       2
 
386
3       1
 
387
select t1.a,t2.b from t1,t2 where t1.a=t2.a group by t1.a,t2.b ORDER BY NULL;
 
388
a       b
 
389
1       3
 
390
3       1
 
391
2       2
 
392
1       1
 
393
explain select t1.a,t2.b from t1,t2 where t1.a=t2.a group by t1.a,t2.b;
 
394
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
395
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    6       Using temporary; Using filesort
 
396
1       SIMPLE  t2      ALL     a       NULL    NULL    NULL    4       Using where; Using join buffer
 
397
explain select t1.a,t2.b from t1,t2 where t1.a=t2.a group by t1.a,t2.b ORDER BY NULL;
 
398
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
399
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    6       Using temporary
 
400
1       SIMPLE  t2      ALL     a       NULL    NULL    NULL    4       Using where; Using join buffer
 
401
drop table t1,t2;
 
402
create table t1 (a int, b int);
 
403
insert into t1 values (1, 4),(10, 40),(1, 4),(10, 43),(1, 4),(10, 41),(1, 4),(10, 43),(1, 4);
 
404
select a, MAX(b), INTERVAL (MAX(b), 1,3,10,30,39,40,50,60,100,1000) from t1 group by a;
 
405
a       MAX(b)  INTERVAL (MAX(b), 1,3,10,30,39,40,50,60,100,1000)
 
406
1       4       2
 
407
10      43      6
 
408
select a, MAX(b), CASE MAX(b) when 4 then 4 when 43 then 43 else 0 end from t1 group by a;
 
409
a       MAX(b)  CASE MAX(b) when 4 then 4 when 43 then 43 else 0 end 
 
410
1       4       4
 
411
10      43      43
 
412
select a, MAX(b), FIELD(MAX(b), '43', '4', '5') from t1 group by a;
 
413
a       MAX(b)  FIELD(MAX(b), '43', '4', '5')
 
414
1       4       2
 
415
10      43      1
 
416
select a, MAX(b), CONCAT_WS(MAX(b), '43', '4', '5') from t1 group by a;
 
417
a       MAX(b)  CONCAT_WS(MAX(b), '43', '4', '5')
 
418
1       4       434445
 
419
10      43      43434435
 
420
select a, MAX(b), ELT(MAX(b), 'a', 'b', 'c', 'd', 'e', 'f') from t1 group by a;
 
421
a       MAX(b)  ELT(MAX(b), 'a', 'b', 'c', 'd', 'e', 'f')
 
422
1       4       d
 
423
10      43      NULL
 
424
select a, MAX(b), MAKE_SET(MAX(b), 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h') from t1 group by a;
 
425
a       MAX(b)  MAKE_SET(MAX(b), 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h')
 
426
1       4       c
 
427
10      43      a,b,d,f
 
428
drop table t1;
 
429
create table t1 (id int not null, qty int not null);
 
430
insert into t1 values (1,2),(1,3),(2,4),(2,5);
 
431
select id, sum(qty) as sqty, count(qty) as cqty from t1 group by id having sum(qty)>2 and cqty>1;
 
432
id      sqty    cqty
 
433
1       5       2
 
434
2       9       2
 
435
select id, sum(qty) as sqty from t1 group by id having sqty>2 and count(qty)>1;
 
436
id      sqty
 
437
1       5
 
438
2       9
 
439
select id, sum(qty) as sqty, count(qty) as cqty from t1 group by id having sqty>2 and cqty>1;
 
440
id      sqty    cqty
 
441
1       5       2
 
442
2       9       2
 
443
select id, sum(qty) as sqty, count(qty) as cqty from t1 group by id having sum(qty)>2 and count(qty)>1;
 
444
id      sqty    cqty
 
445
1       5       2
 
446
2       9       2
 
447
select count(*), case interval(qty,2,3,4,5,6,7,8) when -1 then NULL when 0 then "zero" when 1 then "one" when 2 then "two" end as category from t1 group by category;
 
448
count(*)        category
 
449
2       NULL
 
450
1       one
 
451
1       two
 
452
select count(*), interval(qty,2,3,4,5,6,7,8) as category from t1 group by category;
 
453
count(*)        category
 
454
1       1
 
455
1       2
 
456
1       3
 
457
1       4
 
458
drop table t1;
 
459
CREATE TABLE t1 (
 
460
userid int,
 
461
score int,
 
462
key (score)
 
463
);
 
464
INSERT INTO t1 VALUES (1,1),(2,2),(1,1),(3,3),(3,3),(3,3),(3,3),(3,3);
 
465
SELECT userid,count(*) FROM t1 GROUP BY userid DESC;
 
466
userid  count(*)
 
467
3       5
 
468
2       1
 
469
1       2
 
470
EXPLAIN SELECT userid,count(*) FROM t1 GROUP BY userid DESC;
 
471
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
472
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    8       Using temporary; Using filesort
 
473
DROP TABLE t1;
 
474
CREATE TABLE t1 (
 
475
i int default NULL,
 
476
j int default NULL
 
477
);
 
478
INSERT INTO t1 VALUES (1,2),(2,3),(4,5),(3,5),(1,5),(23,5);
 
479
SELECT i, COUNT(DISTINCT(i)) FROM t1 GROUP BY j ORDER BY NULL;
 
480
i       COUNT(DISTINCT(i))
 
481
1       1
 
482
2       1
 
483
4       4
 
484
explain SELECT i, COUNT(DISTINCT(i)) FROM t1 GROUP BY j ORDER BY NULL;
 
485
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
486
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    6       Using filesort
 
487
DROP TABLE t1;
 
488
create table t1 (a int);
 
489
insert into t1 values(null);
 
490
select min(a) is null from t1;
 
491
min(a) is null 
 
492
1
 
493
select min(a) is null or null from t1;
 
494
min(a) is null or null 
 
495
1
 
496
select 1 and min(a) is null from t1;
 
497
1 and min(a) is null 
 
498
1
 
499
drop table t1;
 
500
create table t1 ( col1 int, col2 int );
 
501
insert into t1 values (1,1),(1,2),(1,3),(2,1),(2,2);
 
502
select group_concat( distinct col1 ) as alias from t1
 
503
group by col2 having alias like '%';
 
504
alias
 
505
1,2
 
506
1,2
 
507
1
 
508
drop table t1;
 
509
create table t1 (a integer, b integer, c integer);
 
510
insert into t1 (a,b) values (1,2),(1,3),(2,5);
 
511
select a, 0.1*0+1 r2, sum(1) r1 from t1 where a = 1 group  by a having r1>1 and r2=1;
 
512
a       r2      r1
 
513
1       1.0     2
 
514
select a, round(rand(100)*10) r2, sum(1) r1 from t1 where a = 1 group  by a having r1>1 and r2<=2;
 
515
a       r2      r1
 
516
1       2       2
 
517
select a,sum(b) from t1 where a=1 group by c;
 
518
a       sum(b)
 
519
1       5
 
520
select a*sum(b) from t1 where a=1 group by c;
 
521
a*sum(b)
 
522
5
 
523
select sum(a)*sum(b) from t1 where a=1 group by c;
 
524
sum(a)*sum(b)
 
525
10
 
526
select a,sum(b) from t1 where a=1 group by c having a=1;
 
527
a       sum(b)
 
528
1       5
 
529
select a as d,sum(b) from t1 where a=1 group by c having d=1;
 
530
d       sum(b)
 
531
1       5
 
532
select sum(a)*sum(b) as d from t1 where a=1 group by c having d > 0;
 
533
d
 
534
10
 
535
drop table t1;
 
536
create table t1(a int);
 
537
insert into t1 values (0),(1),(2),(3),(4),(5),(6),(8),(9);
 
538
create table t2 (
 
539
a int,
 
540
b varchar(200) NOT NULL,
 
541
c varchar(50) NOT NULL,
 
542
d varchar(100) NOT NULL,
 
543
primary key (a,b(132),c,d),
 
544
key a (a,b)
 
545
);
 
546
insert into t2 select 
 
547
x3.a,  -- 3
 
548
concat('val-', x3.a + 3*x4.a), -- 12
 
549
concat('val-', @a:=x3.a + 3*x4.a + 12*C.a), -- 120
 
550
concat('val-', @a + 120*D.a)
 
551
from t1 x3, t1 x4, t1 C, t1 D where x3.a < 3 and x4.a < 4 and D.a < 4;
 
552
delete from t2  where a = 2 and b = 'val-2' order by a,b,c,d limit 30;
 
553
explain select c from t2 where a = 2 and b = 'val-2' group by c;
 
554
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
555
1       SIMPLE  t2      ref     PRIMARY,a       PRIMARY 534     const,const     1       Using where; Using temporary; Using filesort
 
556
select c from t2 where a = 2 and b = 'val-2' group by c;
 
557
c
 
558
val-74
 
559
val-98
 
560
drop table t1,t2;
 
561
create table t1 (b int4 not null);
 
562
insert into t1 values(300000);
 
563
select * from t1;
 
564
b
 
565
300000
 
566
select min(b) from t1;
 
567
min(b)
 
568
300000
 
569
drop table t1;
 
570
CREATE TABLE t1 (id int PRIMARY KEY, user_id int, hostname longtext);
 
571
INSERT INTO t1 VALUES
 
572
(1, 7, 'cache-dtc-af05.proxy.aol.com'),
 
573
(2, 3, 'what.ever.com'),
 
574
(3, 7, 'cache-dtc-af05.proxy.aol.com'),
 
575
(4, 7, 'cache-dtc-af05.proxy.aol.com');
 
576
SELECT hostname, COUNT(DISTINCT user_id) as no FROM t1
 
577
WHERE hostname LIKE '%aol%'
 
578
    GROUP BY hostname;
 
579
hostname        no
 
580
cache-dtc-af05.proxy.aol.com    1
 
581
DROP TABLE t1;
 
582
CREATE TABLE t1 (a  int, b int);
 
583
INSERT INTO t1 VALUES (1,2), (1,3);
 
584
SELECT a, b FROM t1 GROUP BY 'const';
 
585
a       b
 
586
1       2
 
587
SELECT DISTINCT a, b FROM t1 GROUP BY 'const';
 
588
a       b
 
589
1       2
 
590
DROP TABLE t1;
 
591
CREATE TABLE t1 (id INT, dt DATETIME);
 
592
INSERT INTO t1 VALUES ( 1, '2005-05-01 12:30:00' );
 
593
INSERT INTO t1 VALUES ( 1, '2005-05-01 12:30:00' );
 
594
INSERT INTO t1 VALUES ( 1, '2005-05-01 12:30:00' );
 
595
INSERT INTO t1 VALUES ( 1, '2005-05-01 12:30:00' );
 
596
SELECT dt DIV 1 AS f, id FROM t1 GROUP BY f;
 
597
f       id
 
598
20050501123000  1
 
599
DROP TABLE t1;
 
600
CREATE TABLE t1 (id varchar(20) NOT NULL);
 
601
INSERT INTO t1 VALUES ('trans1'), ('trans2');
 
602
CREATE TABLE t2 (id varchar(20) NOT NULL, err_comment blob NOT NULL);
 
603
INSERT INTO t2 VALUES ('trans1', 'a problem');
 
604
SELECT COUNT(DISTINCT(t1.id)), LEFT(err_comment, 256) AS comment
 
605
FROM t1 LEFT JOIN t2 ON t1.id=t2.id GROUP BY comment;
 
606
COUNT(DISTINCT(t1.id))  comment
 
607
1       NULL
 
608
1       a problem
 
609
DROP TABLE t1, t2;
 
610
create table t1 (f1 date);
 
611
insert into t1 values('2005-06-06');
 
612
insert into t1 values('2005-06-06');
 
613
select date(left(f1+0,8)) from t1 group by 1;
 
614
date(left(f1+0,8))
 
615
2005-06-06
 
616
drop table t1;
 
617
CREATE TABLE t1 (n int);
 
618
INSERT INTO t1 VALUES (1);
 
619
SELECT n+1 AS n FROM t1 GROUP BY n;
 
620
n
 
621
2
 
622
Warnings:
 
623
Warning 1052    Column 'n' in group statement is ambiguous
 
624
DROP TABLE t1;
 
625
create table t1(f1 varchar(5) key);
 
626
insert into t1 values (1),(2);
 
627
select sql_buffer_result max(f1) is null from t1;
 
628
max(f1) is null 
 
629
0
 
630
select sql_buffer_result max(f1)+1 from t1;
 
631
max(f1)+1
 
632
3
 
633
drop table t1;
 
634
CREATE TABLE t1(a INT);
 
635
INSERT INTO t1 VALUES (1),(2);
 
636
SELECT a FROM t1 GROUP BY 'a';
 
637
a
 
638
1
 
639
SELECT a FROM t1 GROUP BY "a";
 
640
a
 
641
1
 
642
SELECT a FROM t1 GROUP BY `a`;
 
643
a
 
644
1
 
645
2
 
646
SELECT a FROM t1 GROUP BY "a";
 
647
a
 
648
1
 
649
SELECT a FROM t1 GROUP BY 'a';
 
650
a
 
651
1
 
652
SELECT a FROM t1 GROUP BY `a`;
 
653
a
 
654
1
 
655
2
 
656
SELECT a FROM t1 HAVING 'a' > 1;
 
657
a
 
658
Warnings:
 
659
Warning 1292    Truncated incorrect DOUBLE value: 'a'
 
660
SELECT a FROM t1 HAVING "a" > 1;
 
661
a
 
662
Warnings:
 
663
Warning 1292    Truncated incorrect DOUBLE value: 'a'
 
664
SELECT a FROM t1 HAVING `a` > 1;
 
665
a
 
666
2
 
667
SELECT a FROM t1 ORDER BY 'a' DESC;
 
668
a
 
669
1
 
670
2
 
671
SELECT a FROM t1 ORDER BY "a" DESC;
 
672
a
 
673
1
 
674
2
 
675
SELECT a FROM t1 ORDER BY `a` DESC;
 
676
a
 
677
2
 
678
1
 
679
DROP TABLE t1;
 
680
CREATE TABLE t1 (
 
681
f1 int NOT NULL auto_increment primary key,
 
682
f2 varchar(100) NOT NULL default ''
 
683
);
 
684
CREATE TABLE t2 (
 
685
f1 varchar(10) NOT NULL default '',
 
686
f2 char(3) NOT NULL default '',
 
687
PRIMARY KEY  (`f1`),
 
688
KEY `k1` (`f2`,`f1`)
 
689
);
 
690
INSERT INTO t1 values(NULL, '');
 
691
INSERT INTO `t2` VALUES ('486878','WDT'),('486910','WDT');
 
692
SELECT SQL_BUFFER_RESULT avg(t2.f1) FROM t1, t2 where t2.f2 = 'SIR' GROUP BY t1.f1;
 
693
avg(t2.f1)
 
694
SELECT avg(t2.f1) FROM t1, t2 where t2.f2 = 'SIR' GROUP BY t1.f1;
 
695
avg(t2.f1)
 
696
DROP TABLE t1, t2;
 
697
create table t1 (c1 char(3), c2 char(3));
 
698
create table t2 (c3 char(3), c4 char(3));
 
699
insert into t1 values ('aaa', 'bb1'), ('aaa', 'bb2');
 
700
insert into t2 values ('aaa', 'bb1'), ('aaa', 'bb2');
 
701
select t1.c1 as c2 from t1, t2 where t1.c2 = t2.c4
 
702
group by c2;
 
703
c2
 
704
aaa
 
705
aaa
 
706
Warnings:
 
707
Warning 1052    Column 'c2' in group statement is ambiguous
 
708
show warnings;
 
709
Level   Code    Message
 
710
Warning 1052    Column 'c2' in group statement is ambiguous
 
711
select t1.c1 as c2 from t1, t2 where t1.c2 = t2.c4
 
712
group by t1.c1;
 
713
c2
 
714
aaa
 
715
show warnings;
 
716
Level   Code    Message
 
717
drop table t1, t2;
 
718
CREATE TABLE t1 (a INT PRIMARY KEY, b INT, key (b));
 
719
INSERT INTO t1 VALUES (1,      1);
 
720
INSERT INTO t1 SELECT  a + 1 , MOD(a + 1 , 20) FROM t1;
 
721
INSERT INTO t1 SELECT  a + 2 , MOD(a + 2 , 20) FROM t1;
 
722
INSERT INTO t1 SELECT  a + 4 , MOD(a + 4 , 20) FROM t1;
 
723
INSERT INTO t1 SELECT  a + 8 , MOD(a + 8 , 20) FROM t1;
 
724
INSERT INTO t1 SELECT  a + 16, MOD(a + 16, 20) FROM t1;
 
725
INSERT INTO t1 SELECT  a + 32, MOD(a + 32, 20) FROM t1;
 
726
INSERT INTO t1 SELECT  a + 64, MOD(a + 64, 20) FROM t1;
 
727
SELECT MIN(b), MAX(b) from t1;
 
728
MIN(b)  MAX(b)
 
729
0       19
 
730
EXPLAIN SELECT b, sum(1) FROM t1 GROUP BY b;
 
731
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
732
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    128     Using temporary; Using filesort
 
733
EXPLAIN SELECT SQL_BIG_RESULT b, sum(1) FROM t1 GROUP BY b;
 
734
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
735
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    128     Using filesort
 
736
SELECT b, sum(1) FROM t1 GROUP BY b;
 
737
b       sum(1)
 
738
0       6
 
739
1       7
 
740
2       7
 
741
3       7
 
742
4       7
 
743
5       7
 
744
6       7
 
745
7       7
 
746
8       7
 
747
9       6
 
748
10      6
 
749
11      6
 
750
12      6
 
751
13      6
 
752
14      6
 
753
15      6
 
754
16      6
 
755
17      6
 
756
18      6
 
757
19      6
 
758
SELECT SQL_BIG_RESULT b, sum(1) FROM t1 GROUP BY b;
 
759
b       sum(1)
 
760
0       6
 
761
1       7
 
762
2       7
 
763
3       7
 
764
4       7
 
765
5       7
 
766
6       7
 
767
7       7
 
768
8       7
 
769
9       6
 
770
10      6
 
771
11      6
 
772
12      6
 
773
13      6
 
774
14      6
 
775
15      6
 
776
16      6
 
777
17      6
 
778
18      6
 
779
19      6
 
780
DROP TABLE t1;
 
781
CREATE TABLE t1 (a INT PRIMARY KEY, b INT);
 
782
INSERT INTO t1 VALUES (1,1),(2,1),(3,2),(4,2),(5,3),(6,3);
 
783
SELECT MAX(a)-MIN(a) FROM t1 GROUP BY b;
 
784
MAX(a)-MIN(a)
 
785
1
 
786
1
 
787
1
 
788
SELECT CEILING(MIN(a)) FROM t1 GROUP BY b;
 
789
CEILING(MIN(a))
 
790
1
 
791
3
 
792
5
 
793
SELECT CASE WHEN AVG(a)>=0 THEN 'Positive' ELSE 'Negative' END FROM t1 
 
794
GROUP BY b;
 
795
CASE WHEN AVG(a)>=0 THEN 'Positive' ELSE 'Negative' END 
 
796
Positive
 
797
Positive
 
798
Positive
 
799
SELECT a + 1 FROM t1 GROUP BY a;
 
800
a + 1
 
801
2
 
802
3
 
803
4
 
804
5
 
805
6
 
806
7
 
807
SELECT a + b FROM t1 GROUP BY b;
 
808
a + b 
 
809
2
 
810
5
 
811
8
 
812
SELECT (SELECT t1_outer.a FROM t1 AS t1_inner GROUP BY b LIMIT 1) 
 
813
FROM t1 AS t1_outer;
 
814
(SELECT t1_outer.a FROM t1 AS t1_inner GROUP BY b LIMIT 1)
 
815
1
 
816
2
 
817
3
 
818
4
 
819
5
 
820
6
 
821
SELECT 1 FROM t1 as t1_outer GROUP BY a 
 
822
HAVING (SELECT t1_outer.a FROM t1 AS t1_inner GROUP BY b LIMIT 1);
 
823
1
 
824
1
 
825
1
 
826
1
 
827
1
 
828
1
 
829
1
 
830
SELECT (SELECT t1_outer.a FROM t1 AS t1_inner LIMIT 1) 
 
831
FROM t1 AS t1_outer GROUP BY t1_outer.b;
 
832
(SELECT t1_outer.a FROM t1 AS t1_inner LIMIT 1)
 
833
1
 
834
3
 
835
5
 
836
SELECT 1 FROM t1 as t1_outer GROUP BY a 
 
837
HAVING (SELECT t1_outer.b FROM t1 AS t1_inner LIMIT 1);
 
838
ERROR 42S22: Unknown column 'test.t1_outer.b' in 'field list'
 
839
SELECT (SELECT SUM(t1_inner.a) FROM t1 AS t1_inner LIMIT 1) 
 
840
FROM t1 AS t1_outer GROUP BY t1_outer.b;
 
841
(SELECT SUM(t1_inner.a) FROM t1 AS t1_inner LIMIT 1)
 
842
21
 
843
21
 
844
21
 
845
SELECT (SELECT SUM(t1_inner.a) FROM t1 AS t1_inner GROUP BY t1_inner.b LIMIT 1)
 
846
FROM t1 AS t1_outer;
 
847
(SELECT SUM(t1_inner.a) FROM t1 AS t1_inner GROUP BY t1_inner.b LIMIT 1)
 
848
3
 
849
3
 
850
3
 
851
3
 
852
3
 
853
3
 
854
SELECT (SELECT SUM(t1_outer.a) FROM t1 AS t1_inner LIMIT 1) 
 
855
FROM t1 AS t1_outer GROUP BY t1_outer.b;
 
856
(SELECT SUM(t1_outer.a) FROM t1 AS t1_inner LIMIT 1)
 
857
3
 
858
7
 
859
11
 
860
SELECT 1 FROM t1 as t1_outer 
 
861
WHERE (SELECT t1_outer.b FROM t1 AS t1_inner GROUP BY t1_inner.b LIMIT 1);
 
862
1
 
863
1
 
864
1
 
865
1
 
866
1
 
867
1
 
868
1
 
869
SELECT b FROM t1 GROUP BY b HAVING CEILING(b) > 0;
 
870
b
 
871
1
 
872
2
 
873
3
 
874
SELECT 1 FROM t1 GROUP BY b HAVING b = 2 OR b = 3 OR SUM(a) > 12;
 
875
1
 
876
1
 
877
1
 
878
SELECT 1 FROM t1 GROUP BY b HAVING ROW (b,b) = ROW (1,1);
 
879
1
 
880
1
 
881
SELECT 1 FROM t1 GROUP BY b HAVING a = 2;
 
882
ERROR 42S22: Unknown column 'a' in 'having clause'
 
883
SELECT 1 FROM t1 GROUP BY SUM(b);
 
884
ERROR HY000: Invalid use of group function
 
885
SELECT b FROM t1 AS t1_outer GROUP BY a HAVING t1_outer.a IN 
 
886
(SELECT SUM(t1_inner.b)+t1_outer.b FROM t1 AS t1_inner GROUP BY t1_inner.a
 
887
HAVING SUM(t1_inner.b)+t1_outer.b > 5);
 
888
b
 
889
3
 
890
DROP TABLE t1;
 
891
create table t1(f1 int, f2 int);
 
892
select * from t1 group by f1;
 
893
f1      f2
 
894
select * from t1 group by f2;
 
895
f1      f2
 
896
select * from t1 group by f1, f2;
 
897
f1      f2
 
898
select t1.f1,t.* from t1, t1 t group by 1;
 
899
f1      f1      f2
 
900
drop table t1;
 
901
CREATE TABLE t1(
 
902
id INT AUTO_INCREMENT PRIMARY KEY, 
 
903
c1 INT NOT NULL, 
 
904
c2 INT NOT NULL,
 
905
UNIQUE KEY (c2,c1));
 
906
INSERT INTO t1(c1,c2) VALUES (5,1), (4,1), (3,5), (2,3), (1,3);
 
907
SELECT * FROM t1 ORDER BY c1;
 
908
id      c1      c2
 
909
5       1       3
 
910
4       2       3
 
911
3       3       5
 
912
2       4       1
 
913
1       5       1
 
914
SELECT * FROM t1 GROUP BY id ORDER BY c1;
 
915
id      c1      c2
 
916
5       1       3
 
917
4       2       3
 
918
3       3       5
 
919
2       4       1
 
920
1       5       1
 
921
SELECT * FROM t1 GROUP BY id ORDER BY id DESC;
 
922
id      c1      c2
 
923
5       1       3
 
924
4       2       3
 
925
3       3       5
 
926
2       4       1
 
927
1       5       1
 
928
SELECT * FROM t1 GROUP BY c2 ,c1, id ORDER BY c2, c1;
 
929
id      c1      c2
 
930
2       4       1
 
931
1       5       1
 
932
5       1       3
 
933
4       2       3
 
934
3       3       5
 
935
SELECT * FROM t1 GROUP BY c2, c1, id ORDER BY c2 DESC, c1;
 
936
id      c1      c2
 
937
3       3       5
 
938
5       1       3
 
939
4       2       3
 
940
2       4       1
 
941
1       5       1
 
942
SELECT * FROM t1 GROUP BY c2, c1, id ORDER BY c2 DESC, c1 DESC;
 
943
id      c1      c2
 
944
3       3       5
 
945
4       2       3
 
946
5       1       3
 
947
1       5       1
 
948
2       4       1
 
949
SELECT * FROM t1 GROUP BY c2  ORDER BY c2, c1;
 
950
id      c1      c2
 
951
1       5       1
 
952
4       2       3
 
953
3       3       5
 
954
SELECT * FROM t1 GROUP BY c2  ORDER BY c2 DESC, c1;
 
955
id      c1      c2
 
956
3       3       5
 
957
4       2       3
 
958
1       5       1
 
959
SELECT * FROM t1 GROUP BY c2  ORDER BY c2 DESC, c1 DESC;
 
960
id      c1      c2
 
961
3       3       5
 
962
4       2       3
 
963
1       5       1
 
964
DROP TABLE t1;
 
965
#
 
966
# Bug#27219: Aggregate functions in ORDER BY.  
 
967
#
 
968
CREATE TABLE t1 (a INT, b INT, c INT DEFAULT 0);
 
969
INSERT INTO t1 (a, b) VALUES (3,3), (2,2), (3,3), (2,2), (3,3), (4,4);
 
970
CREATE TABLE t2 SELECT * FROM t1;
 
971
SELECT 1 FROM t1 ORDER BY COUNT(*);
 
972
1
 
973
1
 
974
SELECT 1 FROM t1 ORDER BY COUNT(*) + 1;
 
975
1
 
976
1
 
977
SELECT 1 FROM t1 ORDER BY COUNT(*) + a;
 
978
1
 
979
1
 
980
SELECT 1 FROM t1 ORDER BY COUNT(*), 1;
 
981
1
 
982
1
 
983
SELECT 1 FROM t1 ORDER BY COUNT(*), a;
 
984
1
 
985
1
 
986
SELECT 1 FROM t1 ORDER BY SUM(a);
 
987
1
 
988
1
 
989
SELECT 1 FROM t1 ORDER BY SUM(a + 1);
 
990
1
 
991
1
 
992
SELECT 1 FROM t1 ORDER BY SUM(a) + 1;
 
993
1
 
994
1
 
995
SELECT 1 FROM t1 ORDER BY SUM(a), b;
 
996
1
 
997
1
 
998
SELECT a FROM t1 ORDER BY COUNT(b);
 
999
a
 
1000
3
 
1001
SELECT t1.a FROM t1 ORDER BY (SELECT SUM(t2.a) FROM t2);
 
1002
a
 
1003
3
 
1004
2
 
1005
3
 
1006
2
 
1007
3
 
1008
4
 
1009
SELECT t1.a FROM t1 ORDER BY (SELECT SUM(t2.a) FROM t2 ORDER BY t2.a);
 
1010
a
 
1011
3
 
1012
2
 
1013
3
 
1014
2
 
1015
3
 
1016
4
 
1017
SELECT t1.a FROM t1 ORDER BY (SELECT t2.a FROM t2 ORDER BY SUM(t2.b) LIMIT 1);
 
1018
a
 
1019
3
 
1020
2
 
1021
3
 
1022
2
 
1023
3
 
1024
4
 
1025
SELECT t1.a FROM t1
 
1026
WHERE t1.a = (SELECT t2.a FROM t2 ORDER BY SUM(t2.b) LIMIT 1);
 
1027
a
 
1028
3
 
1029
3
 
1030
3
 
1031
SELECT t1.a FROM t1 GROUP BY t1.a
 
1032
HAVING t1.a = (SELECT t2.a FROM t2 ORDER BY SUM(t2.a) LIMIT 1);
 
1033
a
 
1034
3
 
1035
SELECT t1.a FROM t1 GROUP BY t1.a
 
1036
HAVING t1.a IN (SELECT t2.a FROM t2 ORDER BY SUM(t1.b));
 
1037
a
 
1038
2
 
1039
3
 
1040
4
 
1041
SELECT t1.a FROM t1 GROUP BY t1.a
 
1042
HAVING t1.a IN (SELECT t2.a FROM t2 ORDER BY t2.a, SUM(t2.b));
 
1043
a
 
1044
3
 
1045
SELECT t1.a FROM t1 GROUP BY t1.a
 
1046
HAVING t1.a > ANY (SELECT t2.a FROM t2 ORDER BY t2.a, SUM(t2.b));
 
1047
a
 
1048
4
 
1049
SELECT t1.a FROM t1
 
1050
WHERE t1.a = (SELECT t2.a FROM t2 ORDER BY SUM(t1.b));
 
1051
a
 
1052
3
 
1053
3
 
1054
3
 
1055
SELECT 1 FROM t1 GROUP BY t1.a
 
1056
HAVING (SELECT AVG(SUM(t1.b) + 1) FROM t2 ORDER BY SUM(t2.a) LIMIT 1);
 
1057
1
 
1058
1
 
1059
1
 
1060
1
 
1061
SELECT 1 FROM t1 GROUP BY t1.a
 
1062
HAVING (SELECT AVG(SUM(t1.b) + t2.b) FROM t2 ORDER BY SUM(t2.a) LIMIT 1);
 
1063
1
 
1064
1
 
1065
1
 
1066
1
 
1067
SELECT 1 FROM t1 GROUP BY t1.a
 
1068
HAVING (SELECT AVG(t1.b + t2.b) FROM t2 ORDER BY SUM(t2.a) LIMIT 1);
 
1069
1
 
1070
1
 
1071
1
 
1072
1
 
1073
SELECT 1 FROM t1 GROUP BY t1.a
 
1074
HAVING (SELECT AVG(SUM(t1.b) + 1) FROM t2 ORDER BY t2.a LIMIT 1);
 
1075
1
 
1076
1
 
1077
1
 
1078
1
 
1079
SELECT 1 FROM t1 GROUP BY t1.a
 
1080
HAVING (SELECT AVG(SUM(t1.b) + t2.b) FROM t2 ORDER BY t2.a LIMIT 1);
 
1081
1
 
1082
1
 
1083
1
 
1084
1
 
1085
SELECT 1 FROM t1 GROUP BY t1.a
 
1086
HAVING (SELECT AVG(t1.b + t2.b) FROM t2 ORDER BY t2.a LIMIT 1);
 
1087
1
 
1088
1
 
1089
1
 
1090
1
 
1091
SELECT t1.a FROM t1 
 
1092
WHERE t1.a = (SELECT t2.a FROM t2 GROUP BY t2.a
 
1093
ORDER BY SUM(t2.b), SUM(t1.b) LIMIT 1);
 
1094
a
 
1095
4
 
1096
SELECT t1.a, SUM(t1.b) FROM t1 
 
1097
WHERE t1.a = (SELECT SUM(t2.b) FROM t2 GROUP BY t2.a
 
1098
ORDER BY SUM(t2.b), SUM(t1.b) LIMIT 1)
 
1099
GROUP BY t1.a;
 
1100
a       SUM(t1.b)
 
1101
4       4
 
1102
SELECT t1.a, SUM(t1.b) FROM t1 
 
1103
WHERE t1.a = (SELECT SUM(t2.b) FROM t2
 
1104
ORDER BY SUM(t2.b) + SUM(t1.b) LIMIT 1)
 
1105
GROUP BY t1.a;
 
1106
a       SUM(t1.b)
 
1107
SELECT t1.a, SUM(t1.b) FROM t1 
 
1108
WHERE t1.a = (SELECT SUM(t2.b) FROM t2
 
1109
ORDER BY SUM(t2.b + t1.a) LIMIT 1)
 
1110
GROUP BY t1.a;
 
1111
a       SUM(t1.b)
 
1112
SELECT t1.a FROM t1 GROUP BY t1.a
 
1113
HAVING (1, 1) = (SELECT SUM(t1.a), t1.a FROM t2 LIMIT 1);
 
1114
a
 
1115
select avg (
 
1116
(select
 
1117
(select sum(outr.a + innr.a) from t1 as innr limit 1) as tt
 
1118
from t1 as outr order by outr.a limit 1))
 
1119
from t1 as most_outer;
 
1120
avg (
 
1121
(select
 
1122
(select sum(outr.a + innr.a) from t1 as innr limit 1) as tt
 
1123
from t1 as outr order by outr.a limit 1))
 
1124
29.0000
 
1125
select avg (
 
1126
(select (
 
1127
(select sum(outr.a + innr.a) from t1 as innr limit 1)) as tt
 
1128
from t1 as outr order by count(outr.a) limit 1)) as tt
 
1129
from t1 as most_outer;
 
1130
tt
 
1131
35.0000
 
1132
select (select sum(outr.a + t1.a) from t1 limit 1) as tt from t1 as outr order by outr.a;
 
1133
tt
 
1134
29
 
1135
29
 
1136
35
 
1137
35
 
1138
35
 
1139
41
 
1140
DROP TABLE t1, t2;
 
1141
End of 5.0 tests
 
1142
CREATE TABLE t1 (a INT, b INT,
 
1143
PRIMARY KEY (a),
 
1144
KEY i2(a,b));
 
1145
INSERT INTO t1 VALUES (1,1),(2,2),(3,3),(4,4),(5,5),(6,6),(7,7),(8,8);
 
1146
INSERT INTO t1 SELECT a + 8,b FROM t1;
 
1147
INSERT INTO t1 SELECT a + 16,b FROM t1;
 
1148
INSERT INTO t1 SELECT a + 32,b FROM t1;
 
1149
INSERT INTO t1 SELECT a + 64,b FROM t1;
 
1150
INSERT INTO t1 SELECT a + 128,b FROM t1 limit 16;
 
1151
ANALYZE TABLE t1;
 
1152
Table   Op      Msg_type        Msg_text
 
1153
test.t1 analyze note    The storage engine for the table doesn't support analyze
 
1154
EXPLAIN SELECT a FROM t1 WHERE a < 2;
 
1155
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1156
1       SIMPLE  t1      ALL     PRIMARY,i2      NULL    NULL    NULL    144     Using where
 
1157
EXPLAIN SELECT a FROM t1 WHERE a < 2 ORDER BY a;
 
1158
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1159
1       SIMPLE  t1      ALL     PRIMARY,i2      NULL    NULL    NULL    144     Using where; Using filesort
 
1160
EXPLAIN SELECT a FROM t1 WHERE a < 2 GROUP BY a;
 
1161
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1162
1       SIMPLE  t1      ALL     PRIMARY,i2      NULL    NULL    NULL    144     Using where; Using filesort
 
1163
EXPLAIN SELECT a FROM t1 IGNORE INDEX (PRIMARY,i2);
 
1164
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1165
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    144     
 
1166
EXPLAIN SELECT a FROM t1 IGNORE INDEX FOR JOIN (PRIMARY,i2);
 
1167
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1168
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    144     
 
1169
EXPLAIN SELECT a FROM t1 IGNORE INDEX FOR GROUP BY (PRIMARY,i2) GROUP BY a;
 
1170
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1171
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    144     Using filesort
 
1172
EXPLAIN SELECT a FROM t1 IGNORE INDEX FOR ORDER BY (PRIMARY,i2) ORDER BY a;
 
1173
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1174
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    144     Using filesort
 
1175
SELECT a FROM t1 IGNORE INDEX FOR ORDER BY (PRIMARY,i2) ORDER BY a;
 
1176
a
 
1177
1
 
1178
2
 
1179
3
 
1180
4
 
1181
5
 
1182
6
 
1183
7
 
1184
8
 
1185
9
 
1186
10
 
1187
11
 
1188
12
 
1189
13
 
1190
14
 
1191
15
 
1192
16
 
1193
17
 
1194
18
 
1195
19
 
1196
20
 
1197
21
 
1198
22
 
1199
23
 
1200
24
 
1201
25
 
1202
26
 
1203
27
 
1204
28
 
1205
29
 
1206
30
 
1207
31
 
1208
32
 
1209
33
 
1210
34
 
1211
35
 
1212
36
 
1213
37
 
1214
38
 
1215
39
 
1216
40
 
1217
41
 
1218
42
 
1219
43
 
1220
44
 
1221
45
 
1222
46
 
1223
47
 
1224
48
 
1225
49
 
1226
50
 
1227
51
 
1228
52
 
1229
53
 
1230
54
 
1231
55
 
1232
56
 
1233
57
 
1234
58
 
1235
59
 
1236
60
 
1237
61
 
1238
62
 
1239
63
 
1240
64
 
1241
65
 
1242
66
 
1243
67
 
1244
68
 
1245
69
 
1246
70
 
1247
71
 
1248
72
 
1249
73
 
1250
74
 
1251
75
 
1252
76
 
1253
77
 
1254
78
 
1255
79
 
1256
80
 
1257
81
 
1258
82
 
1259
83
 
1260
84
 
1261
85
 
1262
86
 
1263
87
 
1264
88
 
1265
89
 
1266
90
 
1267
91
 
1268
92
 
1269
93
 
1270
94
 
1271
95
 
1272
96
 
1273
97
 
1274
98
 
1275
99
 
1276
100
 
1277
101
 
1278
102
 
1279
103
 
1280
104
 
1281
105
 
1282
106
 
1283
107
 
1284
108
 
1285
109
 
1286
110
 
1287
111
 
1288
112
 
1289
113
 
1290
114
 
1291
115
 
1292
116
 
1293
117
 
1294
118
 
1295
119
 
1296
120
 
1297
121
 
1298
122
 
1299
123
 
1300
124
 
1301
125
 
1302
126
 
1303
127
 
1304
128
 
1305
129
 
1306
130
 
1307
131
 
1308
132
 
1309
133
 
1310
134
 
1311
135
 
1312
136
 
1313
137
 
1314
138
 
1315
139
 
1316
140
 
1317
141
 
1318
142
 
1319
143
 
1320
144
 
1321
EXPLAIN SELECT a FROM t1 IGNORE INDEX FOR ORDER BY (PRIMARY)
 
1322
IGNORE INDEX FOR GROUP BY (i2) GROUP BY a;
 
1323
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1324
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    144     Using filesort
 
1325
EXPLAIN SELECT a FROM t1 IGNORE INDEX (PRIMARY) IGNORE INDEX FOR ORDER BY (i2);
 
1326
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1327
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    144     
 
1328
EXPLAIN SELECT a FROM t1 FORCE INDEX (i2);
 
1329
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1330
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    144     
 
1331
EXPLAIN SELECT a FROM t1 USE INDEX ();
 
1332
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1333
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    144     
 
1334
EXPLAIN SELECT a FROM t1 USE INDEX () USE INDEX (i2);
 
1335
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1336
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    144     
 
1337
EXPLAIN SELECT a FROM t1 
 
1338
FORCE INDEX (PRIMARY) 
 
1339
IGNORE INDEX FOR GROUP BY (i2)
 
1340
IGNORE INDEX FOR ORDER BY (i2)
 
1341
USE INDEX (i2);
 
1342
ERROR HY000: Incorrect usage of USE INDEX and FORCE INDEX
 
1343
EXPLAIN SELECT a FROM t1 USE INDEX (i2) USE INDEX ();
 
1344
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1345
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    144     
 
1346
EXPLAIN SELECT a FROM t1 FORCE INDEX ();
 
1347
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your Drizzle server version for the right syntax to use near ')' at line 1
 
1348
EXPLAIN SELECT a FROM t1 IGNORE INDEX ();
 
1349
ERROR 42000: You have an error in your SQL syntax; check the manual that corresponds to your Drizzle server version for the right syntax to use near ')' at line 1
 
1350
EXPLAIN SELECT a FROM t1 USE INDEX FOR JOIN (i2) 
 
1351
USE INDEX FOR GROUP BY (i2) GROUP BY a;
 
1352
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1353
1       SIMPLE  t1      #       NULL    NULL    #       NULL    #       #
 
1354
EXPLAIN SELECT a FROM t1 FORCE INDEX FOR JOIN (i2) 
 
1355
FORCE INDEX FOR GROUP BY (i2) GROUP BY a;
 
1356
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1357
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    144     Using filesort
 
1358
EXPLAIN SELECT a FROM t1 USE INDEX () IGNORE INDEX (i2);
 
1359
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1360
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    144     
 
1361
EXPLAIN SELECT a FROM t1 IGNORE INDEX (i2) USE INDEX ();
 
1362
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1363
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    144     
 
1364
EXPLAIN SELECT a FROM t1 
 
1365
USE INDEX FOR GROUP BY (i2) 
 
1366
USE INDEX FOR ORDER BY (i2)
 
1367
USE INDEX FOR JOIN (i2);
 
1368
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1369
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    144     
 
1370
EXPLAIN SELECT a FROM t1 
 
1371
USE INDEX FOR JOIN (i2) 
 
1372
USE INDEX FOR JOIN (i2) 
 
1373
USE INDEX FOR JOIN (i2,i2);
 
1374
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1375
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    144     
 
1376
EXPLAIN SELECT 1 FROM t1 WHERE a IN
 
1377
(SELECT a FROM t1 USE INDEX (i2) IGNORE INDEX (i2));
 
1378
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1379
1       PRIMARY t1      ALL     NULL    NULL    NULL    NULL    144     Using where
 
1380
2       SUBQUERY        t1      ALL     NULL    NULL    NULL    NULL    144     
 
1381
CREATE TABLE t2 (a INT, b INT, KEY(a));
 
1382
INSERT INTO t2 VALUES (1, 1), (2, 2), (3,3), (4,4);
 
1383
EXPLAIN SELECT a, SUM(b) FROM t2 GROUP BY a LIMIT 2;
 
1384
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1385
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    4       Using temporary; Using filesort
 
1386
EXPLAIN SELECT a, SUM(b) FROM t2 IGNORE INDEX (a) GROUP BY a LIMIT 2;
 
1387
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1388
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    4       Using temporary; Using filesort
 
1389
EXPLAIN SELECT 1 FROM t2 WHERE a IN
 
1390
(SELECT a FROM t1 USE INDEX (i2) IGNORE INDEX (i2));
 
1391
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1392
1       PRIMARY t2      ALL     NULL    NULL    NULL    NULL    4       Using where
 
1393
2       SUBQUERY        t1      ALL     NULL    NULL    NULL    NULL    144     
 
1394
DROP TABLE t1, t2;
 
1395
CREATE TABLE t1(
 
1396
a INT, 
 
1397
b INT NOT NULL, 
 
1398
c INT NOT NULL, 
 
1399
d INT, 
 
1400
UNIQUE KEY (c,b)
 
1401
);
 
1402
INSERT INTO t1 VALUES (1,1,1,50), (1,2,3,40), (2,1,3,4);
 
1403
CREATE TABLE t2(
 
1404
a INT,
 
1405
b INT,
 
1406
UNIQUE KEY(a,b)
 
1407
);
 
1408
INSERT INTO t2 VALUES (NULL, NULL), (NULL, NULL), (NULL, 1), (1, NULL), (1, 1), (1,2);
 
1409
EXPLAIN SELECT c,b,d FROM t1 GROUP BY c,b,d;
 
1410
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1411
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    3       Using filesort
 
1412
SELECT c,b,d FROM t1 GROUP BY c,b,d;
 
1413
c       b       d
 
1414
1       1       50
 
1415
3       1       4
 
1416
3       2       40
 
1417
EXPLAIN SELECT c,b,d FROM t1 GROUP BY c,b,d ORDER BY NULL;
 
1418
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1419
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    3       
 
1420
SELECT c,b,d FROM t1 GROUP BY c,b,d ORDER BY NULL;
 
1421
c       b       d
 
1422
1       1       50
 
1423
3       2       40
 
1424
3       1       4
 
1425
EXPLAIN SELECT c,b,d FROM t1 ORDER BY c,b,d;
 
1426
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1427
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    3       Using filesort
 
1428
SELECT c,b,d FROM t1 ORDER BY c,b,d;
 
1429
c       b       d
 
1430
1       1       50
 
1431
3       1       4
 
1432
3       2       40
 
1433
EXPLAIN SELECT c,b,d FROM t1 GROUP BY c,b;
 
1434
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1435
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    3       Using filesort
 
1436
SELECT c,b,d FROM t1 GROUP BY c,b;
 
1437
c       b       d
 
1438
1       1       50
 
1439
3       1       4
 
1440
3       2       40
 
1441
EXPLAIN SELECT c,b   FROM t1 GROUP BY c,b;
 
1442
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1443
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    3       Using filesort
 
1444
SELECT c,b   FROM t1 GROUP BY c,b;
 
1445
c       b
 
1446
1       1
 
1447
3       1
 
1448
3       2
 
1449
EXPLAIN SELECT a,b from t2 ORDER BY a,b;
 
1450
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1451
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    6       Using filesort
 
1452
SELECT a,b from t2 ORDER BY a,b;
 
1453
a       b
 
1454
NULL    NULL
 
1455
NULL    NULL
 
1456
NULL    1
 
1457
1       NULL
 
1458
1       1
 
1459
1       2
 
1460
EXPLAIN SELECT a,b from t2 GROUP BY a,b;
 
1461
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1462
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    6       Using temporary; Using filesort
 
1463
SELECT a,b from t2 GROUP BY a,b;
 
1464
a       b
 
1465
NULL    NULL
 
1466
NULL    1
 
1467
1       NULL
 
1468
1       1
 
1469
1       2
 
1470
EXPLAIN SELECT a from t2 GROUP BY a;
 
1471
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1472
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    6       Using temporary; Using filesort
 
1473
SELECT a from t2 GROUP BY a;
 
1474
a
 
1475
NULL
 
1476
1
 
1477
EXPLAIN SELECT b from t2 GROUP BY b;
 
1478
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
1479
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    6       Using temporary; Using filesort
 
1480
SELECT b from t2 GROUP BY b;
 
1481
b
 
1482
NULL
 
1483
1
 
1484
2
 
1485
DROP TABLE t1,t2;
 
1486
CREATE TABLE t1 ( a INT, b INT );
 
1487
SELECT b c, (SELECT a FROM t1 WHERE b = c)
 
1488
FROM t1;
 
1489
c       (SELECT a FROM t1 WHERE b = c)
 
1490
SELECT b c, (SELECT a FROM t1 WHERE b = c)
 
1491
FROM t1 
 
1492
HAVING b = 10;
 
1493
c       (SELECT a FROM t1 WHERE b = c)
 
1494
SELECT MAX(b) c, (SELECT a FROM t1 WHERE b = c)
 
1495
FROM t1 
 
1496
HAVING b = 10;
 
1497
ERROR 42S22: Reference 'c' not supported (reference to group function)
 
1498
SELECT b c, (SELECT a FROM t1 WHERE b = c)
 
1499
FROM t1;
 
1500
c       (SELECT a FROM t1 WHERE b = c)
 
1501
SELECT b c, (SELECT a FROM t1 WHERE b = c)
 
1502
FROM t1 
 
1503
HAVING b = 10;
 
1504
c       (SELECT a FROM t1 WHERE b = c)
 
1505
SELECT MAX(b) c, (SELECT a FROM t1 WHERE b = c)
 
1506
FROM t1 
 
1507
HAVING b = 10;
 
1508
ERROR 42S22: Reference 'c' not supported (reference to group function)
 
1509
INSERT INTO t1 VALUES (1, 1);
 
1510
SELECT b c, (SELECT a FROM t1 WHERE b = c)
 
1511
FROM t1;
 
1512
c       (SELECT a FROM t1 WHERE b = c)
 
1513
1       1
 
1514
INSERT INTO t1 VALUES (2, 1);
 
1515
SELECT b c, (SELECT a FROM t1 WHERE b = c)
 
1516
FROM t1;
 
1517
ERROR 21000: Subquery returns more than 1 row
 
1518
DROP TABLE t1;