~ubuntu-branches/ubuntu/trusty/mysql-5.6/trusty

« back to all changes in this revision

Viewing changes to mysql-test/r/distinct.result

  • Committer: Package Import Robot
  • Author(s): James Page
  • Date: 2014-02-12 11:54:27 UTC
  • Revision ID: package-import@ubuntu.com-20140212115427-oq6tfsqxl1wuwehi
Tags: upstream-5.6.15
ImportĀ upstreamĀ versionĀ 5.6.15

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
drop table if exists t1,t2,t3;
 
2
CREATE TABLE t1 (id int,facility char(20));
 
3
CREATE TABLE t2 (facility char(20));
 
4
INSERT INTO t1 VALUES (NULL,NULL);
 
5
INSERT INTO t1 VALUES (-1,'');
 
6
INSERT INTO t1 VALUES (0,'');
 
7
INSERT INTO t1 VALUES (1,'/L');
 
8
INSERT INTO t1 VALUES (2,'A01');
 
9
INSERT INTO t1 VALUES (3,'ANC');
 
10
INSERT INTO t1 VALUES (4,'F01');
 
11
INSERT INTO t1 VALUES (5,'FBX');
 
12
INSERT INTO t1 VALUES (6,'MT');
 
13
INSERT INTO t1 VALUES (7,'P');
 
14
INSERT INTO t1 VALUES (8,'RV');
 
15
INSERT INTO t1 VALUES (9,'SRV');
 
16
INSERT INTO t1 VALUES (10,'VMT');
 
17
INSERT INTO t2 SELECT DISTINCT FACILITY FROM t1;
 
18
select id from t1 group by id;
 
19
id
 
20
NULL
 
21
-1
 
22
0
 
23
1
 
24
2
 
25
3
 
26
4
 
27
5
 
28
6
 
29
7
 
30
8
 
31
9
 
32
10
 
33
select * from t1 order by id;
 
34
id      facility
 
35
NULL    NULL
 
36
-1      
 
37
0       
 
38
1       /L
 
39
2       A01
 
40
3       ANC
 
41
4       F01
 
42
5       FBX
 
43
6       MT
 
44
7       P
 
45
8       RV
 
46
9       SRV
 
47
10      VMT
 
48
select id-5,facility from t1 order by "id-5";
 
49
id-5    facility
 
50
NULL    NULL
 
51
-6      
 
52
-5      
 
53
-4      /L
 
54
-3      A01
 
55
-2      ANC
 
56
-1      F01
 
57
0       FBX
 
58
1       MT
 
59
2       P
 
60
3       RV
 
61
4       SRV
 
62
5       VMT
 
63
select id,concat(facility) from t1 group by id ;
 
64
id      concat(facility)
 
65
NULL    NULL
 
66
-1      
 
67
0       
 
68
1       /L
 
69
2       A01
 
70
3       ANC
 
71
4       F01
 
72
5       FBX
 
73
6       MT
 
74
7       P
 
75
8       RV
 
76
9       SRV
 
77
10      VMT
 
78
select id+0 as a,max(id),concat(facility) as b from t1 group by a order by b desc,a;
 
79
a       max(id) b
 
80
10      10      VMT
 
81
9       9       SRV
 
82
8       8       RV
 
83
7       7       P
 
84
6       6       MT
 
85
5       5       FBX
 
86
4       4       F01
 
87
3       3       ANC
 
88
2       2       A01
 
89
1       1       /L
 
90
-1      -1      
 
91
0       0       
 
92
NULL    NULL    NULL
 
93
select id >= 0 and id <= 5 as grp,count(*) from t1 group by grp;
 
94
grp     count(*)
 
95
NULL    1
 
96
0       6
 
97
1       6
 
98
SELECT DISTINCT FACILITY FROM t1;
 
99
FACILITY
 
100
NULL
 
101
 
 
102
/L
 
103
A01
 
104
ANC
 
105
F01
 
106
FBX
 
107
MT
 
108
P
 
109
RV
 
110
SRV
 
111
VMT
 
112
SELECT FACILITY FROM t2;
 
113
FACILITY
 
114
NULL
 
115
 
 
116
/L
 
117
A01
 
118
ANC
 
119
F01
 
120
FBX
 
121
MT
 
122
P
 
123
RV
 
124
SRV
 
125
VMT
 
126
SELECT count(*) from t1,t2 where t1.facility=t2.facility;
 
127
count(*)
 
128
12
 
129
select count(facility) from t1;
 
130
count(facility)
 
131
12
 
132
select count(*) from t1;
 
133
count(*)
 
134
13
 
135
select count(*) from t1 where facility IS NULL;
 
136
count(*)
 
137
1
 
138
select count(*) from t1 where facility = NULL;
 
139
count(*)
 
140
0
 
141
select count(*) from t1 where facility IS NOT NULL;
 
142
count(*)
 
143
12
 
144
select count(*) from t1 where id IS NULL;
 
145
count(*)
 
146
1
 
147
select count(*) from t1 where id IS NOT NULL;
 
148
count(*)
 
149
12
 
150
drop table t1,t2;
 
151
CREATE TABLE t1 (UserId int(11) DEFAULT '0' NOT NULL);
 
152
INSERT INTO t1 VALUES (20);
 
153
INSERT INTO t1 VALUES (27);
 
154
SELECT UserId FROM t1 WHERE Userid=22;
 
155
UserId
 
156
SELECT UserId FROM t1 WHERE UserId=22 group by Userid;
 
157
UserId
 
158
SELECT DISTINCT UserId FROM t1 WHERE UserId=22 group by Userid;
 
159
UserId
 
160
SELECT DISTINCT UserId FROM t1 WHERE UserId=22;
 
161
UserId
 
162
drop table t1;
 
163
CREATE TABLE t1 (a int(10) unsigned not null primary key,b int(10) unsigned);
 
164
INSERT INTO t1 VALUES (1,1),(2,1),(3,1),(4,1);
 
165
CREATE TABLE t2 (a int(10) unsigned not null, key (A));
 
166
INSERT INTO t2 VALUES (1),(2);
 
167
CREATE TABLE t3 (a int(10) unsigned, key(A), b text);
 
168
INSERT INTO t3 VALUES (1,'1'),(2,'2');
 
169
SELECT DISTINCT t3.b FROM t3,t2,t1 WHERE t3.a=t1.b AND t1.a=t2.a;
 
170
b
 
171
1
 
172
INSERT INTO t2 values (1),(2),(3);
 
173
INSERT INTO t3 VALUES (1,'1'),(2,'2'),(1,'1'),(2,'2');
 
174
explain SELECT distinct t3.a FROM t3,t2,t1 WHERE t3.a=t1.b AND t1.a=t2.a;
 
175
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
176
1       SIMPLE  t1      ALL     PRIMARY NULL    NULL    NULL    4       Using where; Using temporary
 
177
1       SIMPLE  t3      ref     a       a       5       test.t1.b       2       Using index
 
178
1       SIMPLE  t2      index   a       a       4       NULL    5       Using where; Using index; Distinct; Using join buffer (Block Nested Loop)
 
179
SELECT distinct t3.a FROM t3,t2,t1 WHERE t3.a=t1.b AND t1.a=t2.a;
 
180
a
 
181
1
 
182
create temporary table t4 select * from t3;
 
183
insert into t3 select * from t4;
 
184
insert into t4 select * from t3;
 
185
insert into t3 select * from t4;
 
186
insert into t4 select * from t3;
 
187
insert into t3 select * from t4;
 
188
insert into t4 select * from t3;
 
189
insert into t3 select * from t4;
 
190
explain select distinct t1.a from t1,t3 where t1.a=t3.a;
 
191
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
192
1       SIMPLE  t1      index   PRIMARY PRIMARY 4       NULL    4       Using index; Using temporary
 
193
1       SIMPLE  t3      ref     a       a       5       test.t1.a       11      Using index; Distinct
 
194
flush status;
 
195
select distinct t1.a from t1,t3 where t1.a=t3.a;
 
196
a
 
197
1
 
198
2
 
199
show status like 'Handler_read%';
 
200
Variable_name   Value
 
201
Handler_read_first      1
 
202
Handler_read_key        4
 
203
Handler_read_last       0
 
204
Handler_read_next       4
 
205
Handler_read_prev       0
 
206
Handler_read_rnd        0
 
207
Handler_read_rnd_next   3
 
208
flush status;
 
209
select distinct 1 from t1,t3 where t1.a=t3.a;
 
210
1
 
211
1
 
212
show status like 'Handler_read%';
 
213
Variable_name   Value
 
214
Handler_read_first      1
 
215
Handler_read_key        1
 
216
Handler_read_last       0
 
217
Handler_read_next       0
 
218
Handler_read_prev       0
 
219
Handler_read_rnd        0
 
220
Handler_read_rnd_next   2
 
221
explain SELECT distinct t1.a from t1;
 
222
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
223
1       SIMPLE  t1      index   PRIMARY PRIMARY 4       NULL    4       Using index
 
224
explain SELECT distinct t1.a from t1 order by a desc;
 
225
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
226
1       SIMPLE  t1      index   PRIMARY PRIMARY 4       NULL    4       Using index
 
227
explain SELECT t1.a from t1 group by a order by a desc;
 
228
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
229
1       SIMPLE  t1      index   PRIMARY PRIMARY 4       NULL    4       Using index
 
230
explain SELECT distinct t1.a from t1 order by a desc limit 1;
 
231
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
232
1       SIMPLE  t1      index   PRIMARY PRIMARY 4       NULL    1       Using index
 
233
explain SELECT distinct a from t3 order by a desc limit 2;
 
234
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
235
1       SIMPLE  t3      index   a       a       5       NULL    40      Using index
 
236
explain SELECT distinct a,b from t3 order by a+1;
 
237
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
238
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    204     Using temporary; Using filesort
 
239
explain SELECT distinct a,b from t3 order by a limit 2;
 
240
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
241
1       SIMPLE  t3      index   NULL    a       5       NULL    2       Using temporary
 
242
explain SELECT a,b from t3 group by a,b order by a+1;
 
243
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
244
1       SIMPLE  t3      ALL     NULL    NULL    NULL    NULL    204     Using temporary; Using filesort
 
245
 SELECT distinct t1.a from t1;
 
246
a
 
247
1
 
248
2
 
249
3
 
250
4
 
251
 SELECT distinct t1.a from t1 order by a desc;
 
252
a
 
253
4
 
254
3
 
255
2
 
256
1
 
257
 SELECT t1.a from t1 group by a order by a desc;
 
258
a
 
259
4
 
260
3
 
261
2
 
262
1
 
263
 SELECT distinct t1.a from t1 order by a desc limit 1;
 
264
a
 
265
4
 
266
 SELECT distinct a from t3 order by a desc limit 2;
 
267
a
 
268
2
 
269
1
 
270
 SELECT distinct a,b from t3 order by a+1;
 
271
a       b
 
272
1       1
 
273
2       2
 
274
 SELECT distinct a,b from t3 order by a limit 2;
 
275
a       b
 
276
1       1
 
277
2       2
 
278
 SELECT a,b from t3 group by a,b order by a+1;
 
279
a       b
 
280
1       1
 
281
2       2
 
282
drop table t1,t2,t3,t4;
 
283
CREATE TABLE t1 (name varchar(255));
 
284
INSERT INTO t1 VALUES ('aa'),('ab'),('ac'),('ad'),('ae');
 
285
SELECT DISTINCT * FROM t1 LIMIT 2;
 
286
name
 
287
aa
 
288
ab
 
289
SELECT DISTINCT name FROM t1 LIMIT 2;
 
290
name
 
291
aa
 
292
ab
 
293
SELECT DISTINCT 1 FROM t1 LIMIT 2;
 
294
1
 
295
1
 
296
drop table t1;
 
297
CREATE TABLE t1 (
 
298
ID int(11) NOT NULL auto_increment,
 
299
NAME varchar(75) DEFAULT '' NOT NULL,
 
300
LINK_ID int(11) DEFAULT '0' NOT NULL,
 
301
PRIMARY KEY (ID),
 
302
KEY NAME (NAME),
 
303
KEY LINK_ID (LINK_ID)
 
304
);
 
305
INSERT INTO t1 (ID, NAME, LINK_ID) VALUES (1,'Mike',0),(2,'Jack',0),(3,'Bill',0);
 
306
CREATE TABLE t2 (
 
307
ID int(11) NOT NULL auto_increment,
 
308
NAME varchar(150) DEFAULT '' NOT NULL,
 
309
PRIMARY KEY (ID),
 
310
KEY NAME (NAME)
 
311
);
 
312
SELECT DISTINCT
 
313
t2.id AS key_link_id,
 
314
t2.name AS link
 
315
FROM t1
 
316
LEFT JOIN t2 ON t1.link_id=t2.id
 
317
GROUP BY t1.id
 
318
ORDER BY link;
 
319
key_link_id     link
 
320
NULL    NULL
 
321
drop table t1,t2;
 
322
create table t1 (
 
323
id              int not null,
 
324
name    tinytext not null,
 
325
unique  (id)
 
326
);
 
327
create table t2 (
 
328
id              int not null,
 
329
idx             int not null,
 
330
unique  (id, idx)
 
331
);
 
332
create table t3 (
 
333
id              int not null,
 
334
idx             int not null,
 
335
unique  (id, idx)
 
336
);
 
337
insert into t1 values (1,'yes'), (2,'no');
 
338
insert into t2 values (1,1);
 
339
insert into t3 values (1,1);
 
340
EXPLAIN
 
341
SELECT DISTINCT
 
342
t1.id
 
343
from
 
344
t1
 
345
straight_join
 
346
t2
 
347
straight_join
 
348
t3
 
349
straight_join
 
350
t1 as j_lj_t2 left join t2 as t2_lj
 
351
on j_lj_t2.id=t2_lj.id
 
352
straight_join
 
353
t1 as j_lj_t3 left join t3 as t3_lj
 
354
on j_lj_t3.id=t3_lj.id
 
355
WHERE
 
356
((t1.id=j_lj_t2.id AND t2_lj.id IS NULL) OR (t1.id=t2.id AND t2.idx=2))
 
357
AND ((t1.id=j_lj_t3.id AND t3_lj.id IS NULL) OR (t1.id=t3.id AND t3.idx=2));
 
358
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
359
1       SIMPLE  t1      index   id      id      4       NULL    2       Using index; Using temporary
 
360
1       SIMPLE  t2      index   id      id      8       NULL    1       Using index; Distinct; Using join buffer (Block Nested Loop)
 
361
1       SIMPLE  t3      index   id      id      8       NULL    1       Using index; Distinct; Using join buffer (Block Nested Loop)
 
362
1       SIMPLE  j_lj_t2 index   id      id      4       NULL    2       Using where; Using index; Distinct; Using join buffer (Block Nested Loop)
 
363
1       SIMPLE  t2_lj   index   id      id      8       NULL    1       Using where; Using index; Distinct; Using join buffer (Block Nested Loop)
 
364
1       SIMPLE  j_lj_t3 index   id      id      4       NULL    2       Using where; Using index; Distinct; Using join buffer (Block Nested Loop)
 
365
1       SIMPLE  t3_lj   index   id      id      8       NULL    1       Using where; Using index; Distinct; Using join buffer (Block Nested Loop)
 
366
SELECT DISTINCT
 
367
t1.id
 
368
from
 
369
t1
 
370
straight_join
 
371
t2
 
372
straight_join
 
373
t3
 
374
straight_join
 
375
t1 as j_lj_t2 left join t2 as t2_lj
 
376
on j_lj_t2.id=t2_lj.id
 
377
straight_join
 
378
t1 as j_lj_t3 left join t3 as t3_lj
 
379
on j_lj_t3.id=t3_lj.id
 
380
WHERE
 
381
((t1.id=j_lj_t2.id AND t2_lj.id IS NULL) OR (t1.id=t2.id AND t2.idx=2))
 
382
AND ((t1.id=j_lj_t3.id AND t3_lj.id IS NULL) OR (t1.id=t3.id AND t3.idx=2));
 
383
id
 
384
2
 
385
drop table t1,t2,t3;
 
386
create table t1 (a int not null, b int not null, t time);
 
387
insert into t1 values (1,1,"00:06:15"),(1,2,"00:06:15"),(1,2,"00:30:15"),(1,3,"00:06:15"),(1,3,"00:30:15");
 
388
select a,sec_to_time(sum(time_to_sec(t))) from t1 group by a,b;
 
389
a       sec_to_time(sum(time_to_sec(t)))
 
390
1       00:06:15
 
391
1       00:36:30
 
392
1       00:36:30
 
393
select distinct a,sec_to_time(sum(time_to_sec(t))) from t1 group by a,b;
 
394
a       sec_to_time(sum(time_to_sec(t)))
 
395
1       00:06:15
 
396
1       00:36:30
 
397
create table t2 (a int not null primary key, b int);
 
398
insert into t2 values (1,1),(2,2),(3,3);
 
399
select t1.a,sec_to_time(sum(time_to_sec(t))) from t1 left join t2 on (t1.b=t2.a) group by t1.a,t2.b;
 
400
a       sec_to_time(sum(time_to_sec(t)))
 
401
1       00:06:15
 
402
1       00:36:30
 
403
1       00:36:30
 
404
select distinct t1.a,sec_to_time(sum(time_to_sec(t))) from t1 left join t2 on (t1.b=t2.a) group by t1.a,t2.b;
 
405
a       sec_to_time(sum(time_to_sec(t)))
 
406
1       00:06:15
 
407
1       00:36:30
 
408
drop table t1,t2;
 
409
create table t1 (a int not null,b char(5), c text);
 
410
insert into t1 (a) values (1),(2),(3),(4),(1),(2),(3),(4);
 
411
select distinct a from t1 group by b,a having a > 2 order by a desc;
 
412
a
 
413
4
 
414
3
 
415
select distinct a,c from t1 group by b,c,a having a > 2 order by a desc;
 
416
a       c
 
417
4       NULL
 
418
3       NULL
 
419
drop table t1;
 
420
create table t1 (a char(1), key(a)) engine=myisam;
 
421
insert into t1 values('1'),('1');
 
422
select * from t1 where a >= '1';
 
423
a
 
424
1
 
425
1
 
426
select distinct a from t1 order by a desc;
 
427
a
 
428
1
 
429
select distinct a from t1 where a >= '1' order by a desc;
 
430
a
 
431
1
 
432
drop table t1;
 
433
CREATE TABLE t1 (email varchar(50), infoID BIGINT, dateentered DATETIME);
 
434
CREATE TABLE t2 (infoID BIGINT, shipcode varchar(10));
 
435
INSERT INTO t1 (email, infoID, dateentered) VALUES
 
436
('test1@testdomain.com', 1, '2002-07-30 22:56:38'),
 
437
('test1@testdomain.com', 1, '2002-07-27 22:58:16'),
 
438
('test2@testdomain.com', 1, '2002-06-19 15:22:19'),
 
439
('test2@testdomain.com', 2, '2002-06-18 14:23:47'),
 
440
('test3@testdomain.com', 1, '2002-05-19 22:17:32');
 
441
INSERT INTO t2(infoID, shipcode) VALUES
 
442
(1, 'Z001'),
 
443
(2, 'R002');
 
444
SELECT DISTINCTROW email, shipcode FROM t1, t2 WHERE t1.infoID=t2.infoID;
 
445
email   shipcode
 
446
test1@testdomain.com    Z001
 
447
test2@testdomain.com    Z001
 
448
test2@testdomain.com    R002
 
449
test3@testdomain.com    Z001
 
450
SELECT DISTINCTROW email FROM t1 ORDER BY dateentered DESC;
 
451
email
 
452
test1@testdomain.com
 
453
test2@testdomain.com
 
454
test3@testdomain.com
 
455
SELECT DISTINCTROW email, shipcode FROM t1, t2 WHERE t1.infoID=t2.infoID ORDER BY dateentered DESC;
 
456
email   shipcode
 
457
test1@testdomain.com    Z001
 
458
test2@testdomain.com    Z001
 
459
test2@testdomain.com    R002
 
460
test3@testdomain.com    Z001
 
461
drop table t1,t2;
 
462
CREATE TABLE t1 (privatemessageid int(10) unsigned NOT NULL auto_increment,  folderid smallint(6) NOT NULL default '0',  userid int(10) unsigned NOT NULL default '0',  touserid int(10) unsigned NOT NULL default '0',  fromuserid int(10) unsigned NOT NULL default '0',  title varchar(250) NOT NULL default '',  message mediumtext NOT NULL,  dateline int(10) unsigned NOT NULL default '0',  showsignature smallint(6) NOT NULL default '0',  iconid smallint(5) unsigned NOT NULL default '0',  messageread smallint(6) NOT NULL default '0',  readtime int(10) unsigned NOT NULL default '0',  receipt smallint(6) unsigned NOT NULL default '0',  deleteprompt smallint(6) unsigned NOT NULL default '0',  multiplerecipients smallint(6) unsigned NOT NULL default '0',  PRIMARY KEY  (privatemessageid),  KEY userid (userid)) ENGINE=MyISAM;
 
463
INSERT INTO t1 VALUES (128,0,33,33,8,':D','',996121863,1,0,2,996122850,2,0,0);
 
464
CREATE TABLE t2 (userid int(10) unsigned NOT NULL auto_increment,  usergroupid smallint(5) unsigned NOT NULL default '0',  username varchar(50) NOT NULL default '',  password varchar(50) NOT NULL default '',  email varchar(50) NOT NULL default '',  styleid smallint(5) unsigned NOT NULL default '0',  parentemail varchar(50) NOT NULL default '',  coppauser smallint(6) NOT NULL default '0',  homepage varchar(100) NOT NULL default '',  icq varchar(20) NOT NULL default '',  aim varchar(20) NOT NULL default '',  yahoo varchar(20) NOT NULL default '',  signature mediumtext NOT NULL,  adminemail smallint(6) NOT NULL default '0',  showemail smallint(6) NOT NULL default '0',  invisible smallint(6) NOT NULL default '0',  usertitle varchar(250) NOT NULL default '',  customtitle smallint(6) NOT NULL default '0',  joindate int(10) unsigned NOT NULL default '0',  cookieuser smallint(6) NOT NULL default '0',  daysprune smallint(6) NOT NULL default '0',  lastvisit int(10) unsigned NOT NULL default '0',  lastactivity int(10) unsigned NOT NULL default '0',  lastpost int(10) unsigned NOT NULL default '0',  posts smallint(5) unsigned NOT NULL default '0',  timezoneoffset varchar(4) NOT NULL default '',  emailnotification smallint(6) NOT NULL default '0',  buddylist mediumtext NOT NULL,  ignorelist mediumtext NOT NULL,  pmfolders mediumtext NOT NULL,  receivepm smallint(6) NOT NULL default '0',  emailonpm smallint(6) NOT NULL default '0',  pmpopup smallint(6) NOT NULL default '0',  avatarid smallint(6) NOT NULL default '0',  avatarrevision int(6) unsigned NOT NULL default '0',  options smallint(6) NOT NULL default '15',  birthday date NOT NULL default '0000-00-00',  maxposts smallint(6) NOT NULL default '-1',  startofweek smallint(6) NOT NULL default '1',  ipaddress varchar(20) NOT NULL default '',  referrerid int(10) unsigned NOT NULL default '0',  nosessionhash smallint(6) NOT NULL default '0',  autorefresh smallint(6) NOT NULL default '-1',  messagepopup tinyint(2) NOT NULL default '0',  inforum smallint(5) unsigned NOT NULL default '0',  ratenum smallint(5) unsigned NOT NULL default '0',  ratetotal smallint(5) unsigned NOT NULL default '0',  allowrate smallint(5) unsigned NOT NULL default '1',  PRIMARY KEY  (userid),  KEY usergroupid (usergroupid),  KEY username (username),  KEY inforum (inforum)) ENGINE=MyISAM;
 
465
INSERT INTO t2 VALUES (33,6,'Kevin','0','kevin@stileproject.com',1,'',0,'http://www.stileproject.com','','','','',1,1,0,'Administrator',0,996120694,1,-1,1030996168,1031027028,1030599436,36,'-6',0,'','','',1,0,1,0,0,15,'0000-00-00',-1,1,'64.0.0.0',0,1,-1,0,0,4,19,1);
 
466
SELECT DISTINCT t1.*, t2.* FROM t1 LEFT JOIN t2 ON (t2.userid = t1.touserid);
 
467
privatemessageid        folderid        userid  touserid        fromuserid      title   message dateline        showsignature   iconid  messageread     readtime        receipt deleteprompt    multiplerecipients      userid  usergroupid     username        password        email   styleid parentemail     coppauser       homepage        icq     aim     yahoo   signature       adminemail      showemail       invisible       usertitle       customtitle     joindate        cookieuser      daysprune       lastvisit       lastactivity    lastpost        posts   timezoneoffset  emailnotification       buddylist       ignorelist      pmfolders       receivepm       emailonpm       pmpopup avatarid        avatarrevision  options birthday        maxposts        startofweek     ipaddress       referrerid      nosessionhash   autorefresh     messagepopup    inforum ratenum ratetotal       allowrate
 
468
128     0       33      33      8       :D              996121863       1       0       2       996122850       2       0       0       33      6       Kevin   0       kevin@stileproject.com  1               0       http://www.stileproject.com                                     1       1       0       Administrator   0       996120694       1       -1      1030996168      1031027028      1030599436      36      -6      0                               1       0       1       0       0       15      0000-00-00      -1      1       64.0.0.0        0       1       -1      0       0       4       19      1
 
469
DROP TABLE t1,t2;
 
470
CREATE TABLE t1 (a int primary key, b int, c int);
 
471
INSERT t1 VALUES (1,2,3);
 
472
CREATE TABLE t2 (a int primary key, b int, c int);
 
473
INSERT t2 VALUES (3,4,5);
 
474
SELECT DISTINCT t1.a, t2.b FROM t1, t2 WHERE t1.a=1 ORDER BY t2.c;
 
475
a       b
 
476
1       4
 
477
DROP TABLE t1,t2;
 
478
CREATE table t1 (  `id` int(11) NOT NULL auto_increment,  `name` varchar(50) NOT NULL default '',  PRIMARY KEY  (`id`)) ENGINE=MyISAM AUTO_INCREMENT=3 ;
 
479
INSERT INTO t1 VALUES (1, 'aaaaa');
 
480
INSERT INTO t1 VALUES (3, 'aaaaa');
 
481
INSERT INTO t1 VALUES (2, 'eeeeeee');
 
482
select distinct left(name,1) as name from t1;
 
483
name
 
484
a
 
485
e
 
486
drop  table t1;
 
487
CREATE TABLE t1 (
 
488
ID int(11) NOT NULL auto_increment,
 
489
NAME varchar(75) DEFAULT '' NOT NULL,
 
490
LINK_ID int(11) DEFAULT '0' NOT NULL,
 
491
PRIMARY KEY (ID),
 
492
KEY NAME (NAME),
 
493
KEY LINK_ID (LINK_ID)
 
494
);
 
495
INSERT INTO t1 (ID, NAME, LINK_ID) VALUES (1,'Mike',0);
 
496
INSERT INTO t1 (ID, NAME, LINK_ID) VALUES (2,'Jack',0);
 
497
INSERT INTO t1 (ID, NAME, LINK_ID) VALUES (3,'Bill',0);
 
498
CREATE TABLE t2 (
 
499
ID int(11) NOT NULL auto_increment,
 
500
NAME varchar(150) DEFAULT '' NOT NULL,
 
501
PRIMARY KEY (ID),
 
502
KEY NAME (NAME)
 
503
);
 
504
SELECT DISTINCT
 
505
t2.id AS key_link_id,
 
506
t2.name AS link
 
507
FROM t1
 
508
LEFT JOIN t2 ON t1.link_id=t2.id
 
509
GROUP BY t1.id
 
510
ORDER BY link;
 
511
key_link_id     link
 
512
NULL    NULL
 
513
drop table t1,t2;
 
514
CREATE TABLE t1 (
 
515
html varchar(5) default NULL,
 
516
rin int(11) default '0',
 
517
rout int(11) default '0'
 
518
) ENGINE=MyISAM;
 
519
INSERT INTO t1 VALUES ('1',1,0);
 
520
SELECT DISTINCT html,SUM(rout)/(SUM(rin)+1) as 'prod' FROM t1 GROUP BY rin;
 
521
html    prod
 
522
1       0.0000
 
523
drop table t1;
 
524
CREATE TABLE t1 (a int);
 
525
INSERT INTO t1 VALUES (1),(2),(3),(4),(5);
 
526
SELECT DISTINCT a, 1 FROM t1;
 
527
a       1
 
528
1       1
 
529
2       1
 
530
3       1
 
531
4       1
 
532
5       1
 
533
SELECT DISTINCT 1, a FROM t1;
 
534
1       a
 
535
1       1
 
536
1       2
 
537
1       3
 
538
1       4
 
539
1       5
 
540
CREATE TABLE t2 (a int, b int);
 
541
INSERT INTO t2 VALUES (1,1),(2,2),(2,3),(2,4),(3,5);
 
542
SELECT DISTINCT a, b, 2 FROM t2;
 
543
a       b       2
 
544
1       1       2
 
545
2       2       2
 
546
2       3       2
 
547
2       4       2
 
548
3       5       2
 
549
SELECT DISTINCT 2, a, b FROM t2;
 
550
2       a       b
 
551
2       1       1
 
552
2       2       2
 
553
2       2       3
 
554
2       2       4
 
555
2       3       5
 
556
SELECT DISTINCT a, 2, b FROM t2;
 
557
a       2       b
 
558
1       2       1
 
559
2       2       2
 
560
2       2       3
 
561
2       2       4
 
562
3       2       5
 
563
DROP TABLE t1,t2;
 
564
CREATE TABLE t1(a INT PRIMARY KEY, b INT);
 
565
INSERT INTO t1 VALUES (1,1), (2,1), (3,1);
 
566
EXPLAIN SELECT DISTINCT a FROM t1;
 
567
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
568
1       SIMPLE  t1      index   PRIMARY PRIMARY 4       NULL    3       Using index
 
569
EXPLAIN SELECT DISTINCT a,b FROM t1;
 
570
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
571
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    3       NULL
 
572
EXPLAIN SELECT DISTINCT t1_1.a, t1_1.b FROM t1 t1_1, t1 t1_2;
 
573
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
574
1       SIMPLE  t1_1    ALL     NULL    NULL    NULL    NULL    3       Using temporary
 
575
1       SIMPLE  t1_2    index   NULL    PRIMARY 4       NULL    3       Using index; Distinct; Using join buffer (Block Nested Loop)
 
576
EXPLAIN SELECT DISTINCT t1_1.a, t1_1.b FROM t1 t1_1, t1 t1_2
 
577
WHERE t1_1.a = t1_2.a;
 
578
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
579
1       SIMPLE  t1_1    ALL     PRIMARY NULL    NULL    NULL    3       Using temporary
 
580
1       SIMPLE  t1_2    eq_ref  PRIMARY PRIMARY 4       test.t1_1.a     1       Using index; Distinct
 
581
EXPLAIN SELECT a FROM t1 GROUP BY a;
 
582
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
583
1       SIMPLE  t1      index   PRIMARY PRIMARY 4       NULL    3       Using index
 
584
EXPLAIN SELECT a,b FROM t1 GROUP BY a,b;
 
585
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
586
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    3       Using filesort
 
587
EXPLAIN SELECT DISTINCT a,b FROM t1 GROUP BY a,b;
 
588
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
589
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    3       Using filesort
 
590
CREATE TABLE t2(a INT, b INT NOT NULL, c INT NOT NULL, d INT, 
 
591
PRIMARY KEY (a,b));
 
592
INSERT INTO t2 VALUES (1,1,1,50), (1,2,3,40), (2,1,3,4);
 
593
EXPLAIN SELECT DISTINCT a FROM t2;
 
594
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
595
1       SIMPLE  t2      index   PRIMARY PRIMARY 8       NULL    3       Using index
 
596
EXPLAIN SELECT DISTINCT a,a FROM t2;
 
597
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
598
1       SIMPLE  t2      index   PRIMARY PRIMARY 8       NULL    3       Using index
 
599
EXPLAIN SELECT DISTINCT b,a FROM t2;
 
600
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
601
1       SIMPLE  t2      index   PRIMARY PRIMARY 8       NULL    3       Using index
 
602
EXPLAIN SELECT DISTINCT a,c FROM t2;
 
603
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
604
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    3       Using temporary
 
605
EXPLAIN SELECT DISTINCT c,a,b FROM t2;
 
606
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
607
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    3       NULL
 
608
EXPLAIN SELECT DISTINCT a,b,d FROM t2 GROUP BY c,b,d;
 
609
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
610
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    3       Using temporary; Using filesort
 
611
CREATE UNIQUE INDEX c_b_unq ON t2 (c,b);
 
612
EXPLAIN SELECT DISTINCT a,b,d FROM t2 GROUP BY c,b,d;
 
613
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
614
1       SIMPLE  t2      ALL     NULL    NULL    NULL    NULL    3       Using filesort
 
615
DROP TABLE t1,t2;
 
616
create table t1 (id int, dsc varchar(50));
 
617
insert into t1 values (1, "line number one"), (2, "line number two"), (3, "line number three");
 
618
select distinct id, IFNULL(dsc, '-') from t1;
 
619
id      IFNULL(dsc, '-')
 
620
1       line number one
 
621
2       line number two
 
622
3       line number three
 
623
drop table t1;
 
624
CREATE TABLE t1 (a int primary key, b int);
 
625
INSERT INTO t1 (a,b) values (1,1), (2,3), (3,2);
 
626
explain SELECT DISTINCT a, b FROM t1 ORDER BY b;
 
627
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
628
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    3       Using filesort
 
629
SELECT DISTINCT a, b FROM t1 ORDER BY b;
 
630
a       b
 
631
1       1
 
632
3       2
 
633
2       3
 
634
DROP TABLE t1;
 
635
CREATE TABLE t1 (
 
636
ID int(11) NOT NULL auto_increment,
 
637
x varchar(20) default NULL,
 
638
y decimal(10,0) default NULL,
 
639
PRIMARY KEY  (ID),
 
640
KEY (y)
 
641
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
 
642
INSERT INTO t1 VALUES
 
643
(1,'ba','-1'),
 
644
(2,'ba','1150'),
 
645
(306,'ba','-1'),
 
646
(307,'ba','1150'),
 
647
(611,'ba','-1'),
 
648
(612,'ba','1150');
 
649
select count(distinct x,y) from t1;
 
650
count(distinct x,y)
 
651
2
 
652
select count(distinct concat(x,y)) from t1;
 
653
count(distinct concat(x,y))
 
654
2
 
655
drop table t1;
 
656
CREATE TABLE t1 (a INT, b INT, PRIMARY KEY (a,b));
 
657
INSERT INTO t1 VALUES (1, 101);
 
658
INSERT INTO t1 SELECT a + 1, a + 101 FROM t1;
 
659
INSERT INTO t1 SELECT a + 2, a + 102 FROM t1;
 
660
INSERT INTO t1 SELECT a + 4, a + 104 FROM t1;
 
661
INSERT INTO t1 SELECT a + 8, a + 108 FROM t1;
 
662
EXPLAIN SELECT DISTINCT a,a FROM t1 WHERE b < 12 ORDER BY a;
 
663
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
664
1       SIMPLE  t1      index   PRIMARY PRIMARY 8       NULL    16      Using where; Using index
 
665
SELECT DISTINCT a,a FROM t1 WHERE b < 12 ORDER BY a;
 
666
a       a
 
667
DROP TABLE t1;
 
668
DROP TABLE IF EXISTS t1;
 
669
CREATE TABLE t1 (id INT NOT NULL, fruit_id INT NOT NULL, fruit_name varchar(20)
 
670
default NULL);
 
671
INSERT INTO t1 VALUES (1,1,'ORANGE');
 
672
INSERT INTO t1 VALUES (2,2,'APPLE');
 
673
INSERT INTO t1 VALUES (3,2,'APPLE');
 
674
INSERT INTO t1 VALUES (4,3,'PEAR');
 
675
SELECT DISTINCT fruit_id, fruit_name INTO @v1, @v2 FROM t1 WHERE fruit_name = 
 
676
'APPLE';
 
677
SELECT @v1, @v2;
 
678
@v1     @v2
 
679
2       APPLE
 
680
SELECT DISTINCT fruit_id, fruit_name INTO @v3, @v4 FROM t1 GROUP BY fruit_id, 
 
681
fruit_name HAVING fruit_name = 'APPLE';
 
682
SELECT @v3, @v4;
 
683
@v3     @v4
 
684
2       APPLE
 
685
SELECT DISTINCT @v5:= fruit_id, @v6:= fruit_name INTO @v7, @v8 FROM t1 WHERE 
 
686
fruit_name = 'APPLE';
 
687
SELECT @v5, @v6, @v7, @v8;
 
688
@v5     @v6     @v7     @v8
 
689
2       APPLE   2       APPLE
 
690
SELECT DISTINCT @v5 + fruit_id, CONCAT(@v6, fruit_name) INTO @v9, @v10 FROM t1 
 
691
WHERE fruit_name = 'APPLE';
 
692
SELECT @v5, @v6, @v7, @v8, @v9, @v10;
 
693
@v5     @v6     @v7     @v8     @v9     @v10
 
694
2       APPLE   2       APPLE   4       APPLEAPPLE
 
695
SELECT DISTINCT @v11:= @v5 + fruit_id, @v12:= CONCAT(@v6, fruit_name) INTO 
 
696
@v13, @v14 FROM t1 WHERE fruit_name = 'APPLE';
 
697
SELECT @v11, @v12, @v13, @v14;
 
698
@v11    @v12    @v13    @v14
 
699
4       APPLEAPPLE      4       APPLEAPPLE
 
700
SELECT DISTINCT @v13, @v14 INTO @v15, @v16 FROM t1 WHERE fruit_name = 'APPLE';
 
701
SELECT @v15, @v16;
 
702
@v15    @v16
 
703
4       APPLEAPPLE
 
704
SELECT DISTINCT 2 + 2, 'Bob' INTO @v17, @v18 FROM t1 WHERE fruit_name = 
 
705
'APPLE';
 
706
SELECT @v17, @v18;
 
707
@v17    @v18
 
708
4       Bob
 
709
DROP TABLE IF EXISTS t2;
 
710
CREATE TABLE t2 (fruit_id INT NOT NULL, fruit_name varchar(20)
 
711
default NULL);
 
712
SELECT DISTINCT fruit_id, fruit_name INTO OUTFILE 
 
713
'../../tmp/data1.tmp' FROM t1 WHERE fruit_name = 'APPLE';
 
714
LOAD DATA INFILE '../../tmp/data1.tmp' INTO TABLE t2;
 
715
SELECT DISTINCT @v19:= fruit_id, @v20:= fruit_name INTO OUTFILE 
 
716
'../../tmp/data2.tmp' FROM t1 WHERE fruit_name = 'APPLE';
 
717
LOAD DATA INFILE '../../tmp/data2.tmp' INTO TABLE t2;
 
718
SELECT @v19, @v20;
 
719
@v19    @v20
 
720
2       APPLE
 
721
SELECT * FROM t2;
 
722
fruit_id        fruit_name
 
723
2       APPLE
 
724
2       APPLE
 
725
DROP TABLE t1;
 
726
DROP TABLE t2;
 
727
CREATE TABLE t1 (a CHAR(1));
 
728
INSERT INTO t1 VALUES('A'), (0);
 
729
SELECT a FROM t1 WHERE a=0;
 
730
a
 
731
A
 
732
0
 
733
Warnings:
 
734
Warning 1292    Truncated incorrect DOUBLE value: 'A'
 
735
SELECT DISTINCT a FROM t1 WHERE a=0;
 
736
a
 
737
A
 
738
0
 
739
Warnings:
 
740
Warning 1292    Truncated incorrect DOUBLE value: 'A'
 
741
DROP TABLE t1;
 
742
CREATE TABLE t1 (a DATE);
 
743
INSERT INTO t1 VALUES ('1972-07-29'), ('1972-02-06');
 
744
EXPLAIN SELECT (SELECT DISTINCT a FROM t1 WHERE a = '2002-08-03');
 
745
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
746
1       PRIMARY NULL    NULL    NULL    NULL    NULL    NULL    NULL    No tables used
 
747
2       SUBQUERY        t1      ALL     NULL    NULL    NULL    NULL    2       Using where
 
748
EXPLAIN SELECT (SELECT DISTINCT ADDDATE(a,1) FROM t1
 
749
WHERE ADDDATE(a,1) = '2002-08-03');
 
750
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
751
1       PRIMARY NULL    NULL    NULL    NULL    NULL    NULL    NULL    No tables used
 
752
2       SUBQUERY        t1      ALL     NULL    NULL    NULL    NULL    2       Using where
 
753
CREATE TABLE t2 (a CHAR(5) CHARACTER SET latin1 COLLATE latin1_general_ci);
 
754
INSERT INTO t2 VALUES (0xf6);
 
755
INSERT INTO t2 VALUES ('oe');
 
756
SELECT COUNT(*) FROM (SELECT DISTINCT a FROM t2) dt;
 
757
COUNT(*)
 
758
2
 
759
SELECT COUNT(*) FROM 
 
760
(SELECT DISTINCT a FROM t2 WHERE a='oe' COLLATE latin1_german2_ci) dt;
 
761
COUNT(*)
 
762
2
 
763
DROP TABLE t1, t2;
 
764
CREATE TABLE t1 (a INT, UNIQUE (a));
 
765
INSERT INTO t1 VALUES (4),(null),(2),(1),(null),(3);
 
766
EXPLAIN SELECT DISTINCT a FROM t1;
 
767
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
768
1       SIMPLE  t1      index   a       a       5       NULL    6       Using index
 
769
SELECT DISTINCT a FROM t1;
 
770
a
 
771
NULL
 
772
1
 
773
2
 
774
3
 
775
4
 
776
EXPLAIN SELECT a FROM t1 GROUP BY a;
 
777
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
778
1       SIMPLE  t1      index   a       a       5       NULL    6       Using index
 
779
SELECT a FROM t1 GROUP BY a;
 
780
a
 
781
NULL
 
782
1
 
783
2
 
784
3
 
785
4
 
786
DROP TABLE t1;
 
787
CREATE TABLE t1 (a INT, b INT);
 
788
INSERT INTO t1 VALUES(1,1),(1,2),(1,3);
 
789
SELECT DISTINCT a, b FROM t1;
 
790
a       b
 
791
1       1
 
792
1       2
 
793
1       3
 
794
SELECT DISTINCT a, a, b FROM t1;
 
795
a       a       b
 
796
1       1       1
 
797
1       1       2
 
798
1       1       3
 
799
DROP TABLE t1;
 
800
End of 5.0 tests
 
801
CREATE TABLE t1(a INT, b INT, c INT, d INT, e INT,
 
802
PRIMARY KEY(a,b,c,d,e),
 
803
KEY(a,b,d,c)
 
804
);
 
805
INSERT INTO t1(a, b, c) VALUES (1, 1, 1),
 
806
(1, 1, 2),
 
807
(1, 1, 3),
 
808
(1, 2, 1),
 
809
(1, 2, 2),
 
810
(1, 2, 3);
 
811
EXPLAIN SELECT DISTINCT a, b, d, c FROM t1;
 
812
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
813
1       SIMPLE  t1      index   PRIMARY,a       a       16      NULL    6       Using index
 
814
SELECT DISTINCT a, b, d, c FROM t1;
 
815
a       b       d       c
 
816
1       1       0       1
 
817
1       1       0       2
 
818
1       1       0       3
 
819
1       2       0       1
 
820
1       2       0       2
 
821
1       2       0       3
 
822
DROP TABLE t1;
 
823
#
 
824
# Bug #46159: simple query that never returns
 
825
#
 
826
SET @old_max_heap_table_size = @@max_heap_table_size;
 
827
SET @@max_heap_table_size = 16384;
 
828
SET @old_sort_buffer_size = @@sort_buffer_size;
 
829
SET @@sort_buffer_size = 32804;
 
830
CREATE TABLE t1(c1 int, c2 VARCHAR(20));
 
831
INSERT INTO t1 VALUES (1, '1'), (1, '1'), (2, '2'), (3, '1'), (3, '1'), (4, '4');
 
832
INSERT INTO t1 SELECT 5 + 10000 * RAND(), '5' FROM t1;
 
833
INSERT INTO t1 SELECT 5 + 10000 * RAND(), '5' FROM t1;
 
834
INSERT INTO t1 SELECT 5 + 10000 * RAND(), '5' FROM t1;
 
835
INSERT INTO t1 SELECT 5 + 10000 * RAND(), '5' FROM t1;
 
836
INSERT INTO t1 SELECT 5 + 10000 * RAND(), '5' FROM t1;
 
837
INSERT INTO t1 SELECT 5 + 10000 * RAND(), '5' FROM t1;
 
838
INSERT INTO t1 SELECT 5 + 10000 * RAND(), '5' FROM t1;
 
839
INSERT INTO t1 SELECT 5 + 10000 * RAND(), '5' FROM t1;
 
840
SELECT c1, c2, COUNT(*) FROM t1 GROUP BY c1 LIMIT 4;
 
841
c1      c2      COUNT(*)
 
842
1       1       2
 
843
2       2       1
 
844
3       1       2
 
845
4       4       1
 
846
SELECT DISTINCT c2 FROM t1 GROUP BY c1 HAVING COUNT(*) > 1;
 
847
c2
 
848
1
 
849
5
 
850
DROP TABLE t1;
 
851
SET @@sort_buffer_size = @old_sort_buffer_size;
 
852
SET @@max_heap_table_size = @old_max_heap_table_size;
 
853
End of 5.1 tests
 
854
#
 
855
# Bug #11744875: 4082: integer lengths cause truncation with distinct concat and innodb
 
856
#
 
857
CREATE TABLE t1 (a INT(1), b INT(1));
 
858
INSERT INTO t1 VALUES (1111, 2222), (3333, 4444);
 
859
SELECT DISTINCT CONCAT(a,b) AS c FROM t1 ORDER BY 1;
 
860
c
 
861
11112222
 
862
33334444
 
863
DROP TABLE t1;
 
864
End of 5.5 tests
 
865
#
 
866
# Bug#13335170 - ASSERT IN
 
867
# PLAN_CHANGE_WATCHDOG::~PLAN_CHANGE_WATCHDOG() ON SELECT DISTINCT 
 
868
#
 
869
CREATE TABLE t1 (
 
870
col_int_key int(11) NOT NULL,
 
871
col_time_key time NOT NULL,
 
872
col_datetime_key datetime NOT NULL,
 
873
KEY col_int_key (col_int_key),
 
874
KEY col_time_key (col_time_key),
 
875
KEY col_datetime_key (col_datetime_key)
 
876
) ENGINE=InnoDB;
 
877
INSERT INTO t1 VALUES (7,'06:17:39','2003-08-21 00:00:00');
 
878
SELECT DISTINCT col_int_key
 
879
FROM t1
 
880
WHERE col_int_key IN  ( 18, 6, 84, 4, 0, 2, 8, 3, 7, 9, 1 )  
 
881
AND col_datetime_key BETWEEN '2001-08-04' AND '2003-06-13'  
 
882
ORDER BY col_time_key
 
883
LIMIT 3;
 
884
col_int_key
 
885
DROP TABLE t1;
 
886
#
 
887
# BUG#13540692: WRONG NULL HANDLING WITH RIGHT JOIN + 
 
888
#               DISTINCT OR ORDER BY
 
889
#
 
890
CREATE TABLE t1 (
 
891
a INT,
 
892
b INT NOT NULL
 
893
);
 
894
INSERT INTO t1 VALUES (1,2), (3,3);
 
895
 
 
896
EXPLAIN SELECT DISTINCT subselect.b
 
897
FROM t1 LEFT JOIN 
 
898
(SELECT it_b.* FROM t1 as it_a LEFT JOIN t1 as it_b ON true) AS subselect 
 
899
ON t1.a = subselect.b
 
900
;
 
901
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
902
1       PRIMARY t1      ALL     NULL    NULL    NULL    NULL    2       Using temporary
 
903
1       PRIMARY <derived2>      ref     <auto_key0>     <auto_key0>     5       test.t1.a       2       NULL
 
904
2       DERIVED it_a    ALL     NULL    NULL    NULL    NULL    2       NULL
 
905
2       DERIVED it_b    ALL     NULL    NULL    NULL    NULL    2       Using where; Using join buffer (Block Nested Loop)
 
906
SELECT DISTINCT subselect.b
 
907
FROM t1 LEFT JOIN 
 
908
(SELECT it_b.* FROM t1 as it_a LEFT JOIN t1 as it_b ON true) AS subselect 
 
909
ON t1.a = subselect.b
 
910
;
 
911
b
 
912
NULL
 
913
3
 
914
DROP TABLE t1;
 
915
#
 
916
# BUG#13538387: WRONG RESULT ON SELECT DISTINCT + LEFT JOIN + 
 
917
#               LIMIT + MIX OF MYISAM AND INNODB
 
918
#
 
919
CREATE TABLE t1 (a INT);
 
920
INSERT INTO t1 VALUES (2),(3);
 
921
CREATE TABLE t2 (b INT);
 
922
CREATE TABLE t3 (
 
923
a INT,
 
924
b INT,
 
925
PRIMARY KEY (b)
 
926
);
 
927
INSERT INTO t3 VALUES (2001,1), (2007,2);
 
928
EXPLAIN SELECT DISTINCT t3.a AS t3_date
 
929
FROM t1
 
930
LEFT JOIN t2 ON false
 
931
LEFT JOIN t3 ON t2.b = t3.b
 
932
LIMIT 1;
 
933
id      select_type     table   type    possible_keys   key     key_len ref     rows    Extra
 
934
1       SIMPLE  t2      system  NULL    NULL    NULL    NULL    0       const row not found
 
935
1       SIMPLE  t3      const   PRIMARY NULL    NULL    NULL    1       Using temporary
 
936
1       SIMPLE  t1      ALL     NULL    NULL    NULL    NULL    2       Distinct
 
937
SELECT DISTINCT t3.a AS t3_date
 
938
FROM t1
 
939
LEFT JOIN t2 ON false
 
940
LEFT JOIN t3 ON t2.b = t3.b
 
941
LIMIT 1;
 
942
t3_date
 
943
NULL
 
944
DROP TABLE t1,t2,t3;