106
create table t1 (id int(10) primary key);
106
create table t1 (id int primary key);
107
107
insert into t1 values (1),(2),(3),(4),(5),(6),(7),(8),(9);
108
108
select * from t1 where id in (2,5,9);
114
114
create table t1 (
115
a char(1) character set latin1 collate latin1_general_ci,
116
b char(1) character set latin1 collate latin1_swedish_ci,
117
c char(1) character set latin1 collate latin1_danish_ci
119
119
insert into t1 values ('A','B','C');
120
120
insert into t1 values ('a','c','c');
121
121
select * from t1 where a in (b);
122
ERROR HY000: Illegal mix of collations (latin1_general_ci,IMPLICIT) and (latin1_swedish_ci,IMPLICIT) for operation '='
123
123
select * from t1 where a in (b,c);
124
ERROR HY000: Illegal mix of collations (latin1_general_ci,IMPLICIT), (latin1_swedish_ci,IMPLICIT), (latin1_danish_ci,IMPLICIT) for operation ' IN '
125
125
select * from t1 where 'a' in (a,b,c);
126
ERROR HY000: Illegal mix of collations for operation ' IN '
127
129
select * from t1 where 'a' in (a);
135
select * from t1 where 'a' collate latin1_general_ci in (a,b,c);
137
select * from t1 where 'a' collate utf8_general_ci in (a,b,c);
139
select * from t1 where 'a' collate latin1_bin in (a,b,c);
142
select * from t1 where 'a' in (a,b,c collate latin1_bin);
145
explain extended select * from t1 where 'a' in (a,b,c collate latin1_bin);
141
select * from t1 where 'a' collate utf8_bin in (a,b,c);
144
select * from t1 where 'a' in (a,b,c collate utf8_bin);
147
explain extended select * from t1 where 'a' in (a,b,c collate utf8_bin);
146
148
id select_type table type possible_keys key key_len ref rows filtered Extra
147
149
1 SIMPLE t1 ALL NULL NULL NULL NULL 2 100.00 Using where
149
Note 1003 select "test"."t1"."a" AS "a","test"."t1"."b" AS "b","test"."t1"."c" AS "c" from "test"."t1" where ('a' in ("test"."t1"."a","test"."t1"."b",("test"."t1"."c" collate latin1_bin)))
152
create table t1 (a char(10) character set utf8 not null);
153
insert into t1 values ('bbbb'),(_koi8r'����'),(_latin1'����');
154
select a from t1 where a in ('bbbb',_koi8r'����',_latin1'����') order by a;
160
create table t1 (a char(10) character set latin1 not null);
151
Note 1003 select `test`.`t1`.`a` AS `a`,`test`.`t1`.`b` AS `b`,`test`.`t1`.`c` AS `c` from `test`.`t1` where ('a' in (`test`.`t1`.`a`,`test`.`t1`.`b`,(`test`.`t1`.`c` collate utf8_bin)))
153
create table t1 (a char(10) not null);
161
154
insert into t1 values ('a'),('b'),('c');
162
155
select a from t1 where a IN ('a','b','c') order by a;
227
create table t1 (a int);
219
create table t1 (a int) ENGINE=MYISAM;
228
220
insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
229
create table t2 (a int, filler char(200), key(a));
221
create table t2 (a int, filler char(200), key(a)) ENGINE=MYISAM;
230
222
insert into t2 select C.a*2, 'no' from t1 A, t1 B, t1 C;
231
223
insert into t2 select C.a*2+1, 'yes' from t1 C;
233
225
select * from t2 where a NOT IN (0, 2,4,6,8,10,12,14,16,18);
234
226
id select_type table type possible_keys key key_len ref rows Extra
235
1 SIMPLE t2 range a a 5 NULL 12 Using index condition; Using MRR
227
1 SIMPLE t2 range a a 5 NULL 12 Using where; Using MRR
236
228
select * from t2 where a NOT IN (0, 2,4,6,8,10,12,14,16,18);
248
240
explain select * from t2 force index(a) where a NOT IN (2,2,2,2,2,2);
249
241
id select_type table type possible_keys key key_len ref rows Extra
250
1 SIMPLE t2 range a a 5 NULL 912 Using index condition; Using MRR
242
1 SIMPLE t2 range a a 5 NULL 912 Using where; Using MRR
251
243
explain select * from t2 force index(a) where a <> 2;
252
244
id select_type table type possible_keys key key_len ref rows Extra
253
1 SIMPLE t2 range a a 5 NULL 912 Using index condition; Using MRR
245
1 SIMPLE t2 range a a 5 NULL 912 Using where; Using MRR
255
247
create table t2 (a datetime, filler char(200), key(a));
256
248
insert into t2 select '2006-04-25 10:00:00' + interval C.a minute,
262
254
'2006-04-25 10:00:00','2006-04-25 10:02:00','2006-04-25 10:04:00',
263
255
'2006-04-25 10:06:00', '2006-04-25 10:08:00');
264
256
id select_type table type possible_keys key key_len ref rows Extra
265
1 SIMPLE t2 range a a 9 NULL 18 Using index condition; Using MRR
257
1 SIMPLE t2 range a a 9 NULL 20 Using where; Using MRR
266
258
select * from t2 where a NOT IN (
267
259
'2006-04-25 10:00:00','2006-04-25 10:02:00','2006-04-25 10:04:00',
268
260
'2006-04-25 10:06:00', '2006-04-25 10:08:00');
286
278
('barbas','1'), ('bazbazbay', '1'),('zz','1');
287
279
explain select * from t2 where a not in('foo','barbar', 'bazbazbaz');
288
280
id select_type table type possible_keys key key_len ref rows Extra
289
1 SIMPLE t2 range a a 13 NULL 7 Using index condition; Using MRR
281
1 SIMPLE t2 range a a 43 NULL 5 Using where; Using MRR
291
283
create table t2 (a decimal(10,5), filler char(200), key(a));
292
284
insert into t2 select 345.67890, 'no' from t1 A, t1 B;
298
290
select * from t2 where a not in (345.67890, 43245.34, 64224.56344);
299
291
id select_type table type possible_keys key key_len ref rows Extra
300
1 SIMPLE t2 range a a 7 NULL 7 Using index condition; Using MRR
292
1 SIMPLE t2 range a a 7 NULL 4 Using where; Using MRR
301
293
select * from t2 where a not in (345.67890, 43245.34, 64224.56344);
359
351
id select_type table type possible_keys key key_len ref rows Extra
360
352
1 SIMPLE t3 index PRIMARY PRIMARY 4 NULL 4 Using index
361
353
1 SIMPLE t1 eq_ref PRIMARY PRIMARY 4 test.t3.a 1
362
1 SIMPLE t2 eq_ref PRIMARY PRIMARY 4 test.t3.a 1
354
1 SIMPLE t2 ALL PRIMARY NULL NULL NULL 5 Using where; Using join buffer
363
355
1 SIMPLE t4 ALL PRIMARY NULL NULL NULL 7 Range checked for each record (index map: 0x1)
364
356
SELECT STRAIGHT_JOIN * FROM t3
365
357
JOIN t1 ON t3.a=t1.a
377
369
id select_type table type possible_keys key key_len ref rows Extra
378
370
1 PRIMARY t3 index PRIMARY PRIMARY 4 NULL 4 Using index
379
371
1 PRIMARY t1 eq_ref PRIMARY PRIMARY 4 test.t3.a 1
380
1 PRIMARY t2 eq_ref PRIMARY PRIMARY 4 test.t3.a 1
372
1 PRIMARY t2 ALL PRIMARY NULL NULL NULL 5 Using where; Using join buffer
381
373
2 DEPENDENT SUBQUERY t4 index NULL PRIMARY 4 NULL 7 Using where; Using index
382
374
SELECT STRAIGHT_JOIN
383
375
(SELECT SUM(t4.a) FROM t4 WHERE t4.a IN (t1.b, t2.b))
389
381
DROP TABLE t1,t2,t3,t4;
390
CREATE TABLE t1(a BIGINT UNSIGNED);
391
INSERT INTO t1 VALUES (0xFFFFFFFFFFFFFFFF);
382
CREATE TABLE t1(a BIGINT);
383
INSERT INTO t1 VALUES (0x0FFFFFFFFFFFFFFF);
392
384
SELECT * FROM t1 WHERE a=-1 OR a=-2 ;
394
386
SELECT * FROM t1 WHERE a IN (-1, -2);
396
CREATE TABLE t2 (a BIGINT UNSIGNED);
388
CREATE TABLE t2 (a BIGINT);
397
389
insert into t2 values(13491727406643098568),
398
(0x7fffffefffffffff),
399
(0x7ffffffeffffffff),
400
(0x7fffffffefffffff),
401
(0x7ffffffffeffffff),
402
(0x7fffffffffefffff),
403
(0x7ffffffffffeffff),
404
(0x7fffffffffffefff),
405
(0x7ffffffffffffeff),
406
(0x7fffffffffffffef),
407
(0x7ffffffffffffffe),
408
(0x7fffffffffffffff),
409
(0x8000000000000000),
410
(0x8000000000000001),
411
(0x8000000000000002),
412
(0x8000000000000300),
413
(0x8000000000000400),
414
(0x8000000000000401),
415
(0x8000000000004001),
416
(0x8000000000040001),
417
(0x8000000000400001),
418
(0x8000000004000001),
419
(0x8000000040000001),
420
(0x8000000400000001),
421
(0x8000004000000001),
422
(0x8000040000000001);
423
SELECT HEX(a) FROM t2 WHERE a IN
424
(CAST(0xBB3C3E98175D33C8 AS UNSIGNED),
390
(0x0fffffefffffffff),
391
(0x0ffffffeffffffff),
392
(0x0fffffffefffffff),
393
(0x0ffffffffeffffff),
394
(0x0fffffffffefffff),
395
(0x0ffffffffffeffff),
396
(0x0fffffffffffefff),
397
(0x0ffffffffffffeff),
398
(0x0fffffffffffffef),
399
(0x0ffffffffffffffe),
400
(0x0fffffffffffffff),
401
(0x2000000000000000),
402
(0x2000000000000001),
403
(0x2000000000000002),
404
(0x2000000000000300),
405
(0x2000000000000400),
406
(0x2000000000000401),
407
(0x2000000000004001),
408
(0x2000000000040001),
409
(0x2000000000400001),
410
(0x2000000004000001),
411
(0x2000000040000001),
412
(0x2000000400000001),
413
(0x2000004000000001),
414
(0x2000040000000001);
415
SELECT HEX(a) FROM t2 WHERE a IN (0xBB3C3E98175D33C8, 42);
428
417
SELECT HEX(a) FROM t2 WHERE a IN
429
(CAST(0xBB3C3E98175D33C8 AS UNSIGNED),
430
CAST(0x7fffffffffffffff AS UNSIGNED),
431
CAST(0x8000000000000000 AS UNSIGNED),
432
CAST(0x8000000000000400 AS UNSIGNED),
433
CAST(0x8000000000000401 AS UNSIGNED),
441
SELECT HEX(a) FROM t2 WHERE a IN
442
(CAST(0x7fffffffffffffff AS UNSIGNED),
443
CAST(0x8000000000000001 AS UNSIGNED));
447
SELECT HEX(a) FROM t2 WHERE a IN
448
(CAST(0x7ffffffffffffffe AS UNSIGNED),
449
CAST(0x7fffffffffffffff AS UNSIGNED));
453
SELECT HEX(a) FROM t2 WHERE a IN
431
SELECT HEX(a) FROM t2 WHERE a IN
436
SELECT HEX(a) FROM t2 WHERE a IN
440
SELECT HEX(a) FROM t2 WHERE a IN
460
CREATE TABLE t3 (a BIGINT UNSIGNED);
445
CREATE TABLE t3 (a BIGINT);
461
446
INSERT INTO t3 VALUES (9223372036854775551);
462
447
SELECT HEX(a) FROM t3 WHERE a IN (9223372036854775807, 42);
473
458
INSERT INTO t1 VALUES (1),(2);
474
459
SELECT id FROM t1 WHERE id IN(4564, (SELECT IF(1=0,1,1/0)) );
462
Error 1365 Division by 0
463
Error 1365 Division by 0
478
create table t1(f1 char(1));
466
create table t1(f1 char(1)) ENGINE=MYISAM;
479
467
insert into t1 values ('a'),('b'),('1');
480
468
select f1 from t1 where f1 in ('a',1);
485
Warning 1292 Truncated incorrect DOUBLE value: 'b'
486
472
select f1, case f1 when 'a' then '+' when 1 then '-' end from t1;
487
473
f1 case f1 when 'a' then '+' when 1 then '-' end
492
Warning 1292 Truncated incorrect DOUBLE value: 'b'
493
477
create index t1f1_idx on t1(f1);
494
478
select f1 from t1 where f1 in ('a',1);
499
Warning 1292 Truncated incorrect DOUBLE value: 'b'
500
482
explain select f1 from t1 where f1 in ('a',1);
501
483
id select_type table type possible_keys key key_len ref rows Extra
502
1 SIMPLE t1 index t1f1_idx t1f1_idx 2 NULL 3 Using where; Using index
484
1 SIMPLE t1 index t1f1_idx t1f1_idx 7 NULL 3 Using where; Using index
503
485
select f1 from t1 where f1 in ('a','b');
507
489
explain select f1 from t1 where f1 in ('a','b');
508
490
id select_type table type possible_keys key key_len ref rows Extra
509
1 SIMPLE t1 index t1f1_idx t1f1_idx 2 NULL 3 Using where; Using index
491
1 SIMPLE t1 index t1f1_idx t1f1_idx 7 NULL 3 Using where; Using index
510
492
select f1 from t1 where f1 in (2,1);
514
Warning 1292 Truncated incorrect DOUBLE value: 'a'
515
Warning 1292 Truncated incorrect DOUBLE value: 'b'
516
495
explain select f1 from t1 where f1 in (2,1);
517
496
id select_type table type possible_keys key key_len ref rows Extra
518
1 SIMPLE t1 index t1f1_idx t1f1_idx 2 NULL 3 Using where; Using index
519
create table t2(f2 int, index t2f2(f2));
497
1 SIMPLE t1 index t1f1_idx t1f1_idx 7 NULL 3 Using where; Using index
498
create table t2(f2 int, index t2f2(f2)) ENGINE=MYISAM;
520
499
insert into t2 values(0),(1),(2);
521
500
select f2 from t2 where f2 in ('a',2);
552
531
id select_type table type possible_keys key key_len ref rows Extra
553
532
1 SIMPLE t2 index t2f2 t2f2 5 NULL 3 Using where; Using index
554
533
drop table t1, t2;
555
create table t1 (a time, key(a));
534
create table t1 (a datetime, key(a));
556
535
insert into t1 values (),(),(),(),(),(),(),(),(),();
557
536
select a from t1 where a not in (a,a,a) group by a;