392 lines
		
	
	
		
			7.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			392 lines
		
	
	
		
			7.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
|  | drop table if exists t1; | ||
|  | create table t1 (a int, key (a)); | ||
|  | insert into t1 values (NULL), (0), (1), (2), (3), (4), (5), (6), (7), (8), (9), | ||
|  | (10), (11), (12), (13), (14), (15), (16), (17), (18), (19); | ||
|  | explain select * from t1 where not(not(a)); | ||
|  | id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra | ||
|  | 1	SIMPLE	t1	index	NULL	a	5	NULL	21	Using where; Using index | ||
|  | select * from t1 where not(not(a)); | ||
|  | a | ||
|  | 1 | ||
|  | 2 | ||
|  | 3 | ||
|  | 4 | ||
|  | 5 | ||
|  | 6 | ||
|  | 7 | ||
|  | 8 | ||
|  | 9 | ||
|  | 10 | ||
|  | 11 | ||
|  | 12 | ||
|  | 13 | ||
|  | 14 | ||
|  | 15 | ||
|  | 16 | ||
|  | 17 | ||
|  | 18 | ||
|  | 19 | ||
|  | explain select * from t1 where not(not(not(a > 10))); | ||
|  | id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra | ||
|  | 1	SIMPLE	t1	range	a	a	5	NULL	10	Using where; Using index | ||
|  | select * from t1 where not(not(not(a > 10))); | ||
|  | a | ||
|  | 0 | ||
|  | 1 | ||
|  | 2 | ||
|  | 3 | ||
|  | 4 | ||
|  | 5 | ||
|  | 6 | ||
|  | 7 | ||
|  | 8 | ||
|  | 9 | ||
|  | 10 | ||
|  | explain select * from t1 where not(not(not(a < 5) and not(a > 10))); | ||
|  | id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra | ||
|  | 1	SIMPLE	t1	range	a	a	5	NULL	5	Using where; Using index | ||
|  | select * from t1 where not(not(not(a < 5) and not(a > 10))); | ||
|  | a | ||
|  | 5 | ||
|  | 6 | ||
|  | 7 | ||
|  | 8 | ||
|  | 9 | ||
|  | 10 | ||
|  | explain select * from t1 where not(a = 10); | ||
|  | id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra | ||
|  | 1	SIMPLE	t1	range	a	a	5	NULL	19	Using where; Using index | ||
|  | select * from t1 where not(a = 10); | ||
|  | a | ||
|  | 0 | ||
|  | 1 | ||
|  | 2 | ||
|  | 3 | ||
|  | 4 | ||
|  | 5 | ||
|  | 6 | ||
|  | 7 | ||
|  | 8 | ||
|  | 9 | ||
|  | 11 | ||
|  | 12 | ||
|  | 13 | ||
|  | 14 | ||
|  | 15 | ||
|  | 16 | ||
|  | 17 | ||
|  | 18 | ||
|  | 19 | ||
|  | explain select * from t1 where not(a != 10); | ||
|  | id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra | ||
|  | 1	SIMPLE	t1	ref	a	a	5	const	1	Using where; Using index | ||
|  | select * from t1 where not(a != 1); | ||
|  | a | ||
|  | 1 | ||
|  | explain select * from t1 where not(a < 10); | ||
|  | id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra | ||
|  | 1	SIMPLE	t1	range	a	a	5	NULL	11	Using where; Using index | ||
|  | select * from t1 where not(a < 10); | ||
|  | a | ||
|  | 10 | ||
|  | 11 | ||
|  | 12 | ||
|  | 13 | ||
|  | 14 | ||
|  | 15 | ||
|  | 16 | ||
|  | 17 | ||
|  | 18 | ||
|  | 19 | ||
|  | explain select * from t1 where not(a >= 10); | ||
|  | id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra | ||
|  | 1	SIMPLE	t1	range	a	a	5	NULL	9	Using where; Using index | ||
|  | select * from t1 where not(a >= 10); | ||
|  | a | ||
|  | 0 | ||
|  | 1 | ||
|  | 2 | ||
|  | 3 | ||
|  | 4 | ||
|  | 5 | ||
|  | 6 | ||
|  | 7 | ||
|  | 8 | ||
|  | 9 | ||
|  | explain select * from t1 where not(a > 10); | ||
|  | id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra | ||
|  | 1	SIMPLE	t1	range	a	a	5	NULL	10	Using where; Using index | ||
|  | select * from t1 where not(a > 10); | ||
|  | a | ||
|  | 0 | ||
|  | 1 | ||
|  | 2 | ||
|  | 3 | ||
|  | 4 | ||
|  | 5 | ||
|  | 6 | ||
|  | 7 | ||
|  | 8 | ||
|  | 9 | ||
|  | 10 | ||
|  | explain select * from t1 where not(a <= 10); | ||
|  | id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra | ||
|  | 1	SIMPLE	t1	range	a	a	5	NULL	10	Using where; Using index | ||
|  | select * from t1 where not(a <= 10); | ||
|  | a | ||
|  | 11 | ||
|  | 12 | ||
|  | 13 | ||
|  | 14 | ||
|  | 15 | ||
|  | 16 | ||
|  | 17 | ||
|  | 18 | ||
|  | 19 | ||
|  | explain select * from t1 where not(a is null); | ||
|  | id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra | ||
|  | 1	SIMPLE	t1	range	a	a	5	NULL	20	Using where; Using index | ||
|  | select * from t1 where not(a is null); | ||
|  | a | ||
|  | 0 | ||
|  | 1 | ||
|  | 2 | ||
|  | 3 | ||
|  | 4 | ||
|  | 5 | ||
|  | 6 | ||
|  | 7 | ||
|  | 8 | ||
|  | 9 | ||
|  | 10 | ||
|  | 11 | ||
|  | 12 | ||
|  | 13 | ||
|  | 14 | ||
|  | 15 | ||
|  | 16 | ||
|  | 17 | ||
|  | 18 | ||
|  | 19 | ||
|  | explain select * from t1 where not(a is not null); | ||
|  | id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra | ||
|  | 1	SIMPLE	t1	ref	a	a	5	const	1	Using where; Using index | ||
|  | select * from t1 where not(a is not null); | ||
|  | a | ||
|  | NULL | ||
|  | explain select * from t1 where not(a < 5 or a > 15); | ||
|  | id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra | ||
|  | 1	SIMPLE	t1	range	a	a	5	NULL	10	Using where; Using index | ||
|  | select * from t1 where not(a < 5 or a > 15); | ||
|  | a | ||
|  | 5 | ||
|  | 6 | ||
|  | 7 | ||
|  | 8 | ||
|  | 9 | ||
|  | 10 | ||
|  | 11 | ||
|  | 12 | ||
|  | 13 | ||
|  | 14 | ||
|  | 15 | ||
|  | explain select * from t1 where not(a < 15 and a > 5); | ||
|  | id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra | ||
|  | 1	SIMPLE	t1	range	a	a	5	NULL	12	Using where; Using index | ||
|  | select * from t1 where not(a < 15 and a > 5); | ||
|  | a | ||
|  | 0 | ||
|  | 1 | ||
|  | 2 | ||
|  | 3 | ||
|  | 4 | ||
|  | 5 | ||
|  | 15 | ||
|  | 16 | ||
|  | 17 | ||
|  | 18 | ||
|  | 19 | ||
|  | explain select * from t1 where a = 2 or not(a < 10); | ||
|  | id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra | ||
|  | 1	SIMPLE	t1	range	a	a	5	NULL	12	Using where; Using index | ||
|  | select * from t1 where a = 2 or not(a < 10); | ||
|  | a | ||
|  | 2 | ||
|  | 10 | ||
|  | 11 | ||
|  | 12 | ||
|  | 13 | ||
|  | 14 | ||
|  | 15 | ||
|  | 16 | ||
|  | 17 | ||
|  | 18 | ||
|  | 19 | ||
|  | explain select * from t1 where a > 5 and not(a > 10); | ||
|  | id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra | ||
|  | 1	SIMPLE	t1	range	a	a	5	NULL	4	Using where; Using index | ||
|  | select * from t1 where a > 5 and not(a > 10); | ||
|  | a | ||
|  | 6 | ||
|  | 7 | ||
|  | 8 | ||
|  | 9 | ||
|  | 10 | ||
|  | explain select * from t1 where a > 5 xor a < 10; | ||
|  | id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra | ||
|  | 1	SIMPLE	t1	index	NULL	a	5	NULL	21	Using where; Using index | ||
|  | select * from t1 where a > 5 xor a < 10; | ||
|  | a | ||
|  | 0 | ||
|  | 1 | ||
|  | 2 | ||
|  | 3 | ||
|  | 4 | ||
|  | 5 | ||
|  | 10 | ||
|  | 11 | ||
|  | 12 | ||
|  | 13 | ||
|  | 14 | ||
|  | 15 | ||
|  | 16 | ||
|  | 17 | ||
|  | 18 | ||
|  | 19 | ||
|  | explain select * from t1 where a = 2 or not(a < 5 or a > 15); | ||
|  | id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra | ||
|  | 1	SIMPLE	t1	range	a	a	5	NULL	11	Using where; Using index | ||
|  | select * from t1 where a = 2 or not(a < 5 or a > 15); | ||
|  | a | ||
|  | 2 | ||
|  | 5 | ||
|  | 6 | ||
|  | 7 | ||
|  | 8 | ||
|  | 9 | ||
|  | 10 | ||
|  | 11 | ||
|  | 12 | ||
|  | 13 | ||
|  | 14 | ||
|  | 15 | ||
|  | explain select * from t1 where a = 7 or not(a < 15 and a > 5); | ||
|  | id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra | ||
|  | 1	SIMPLE	t1	range	a	a	5	NULL	13	Using where; Using index | ||
|  | select * from t1 where a = 7 or not(a < 15 and a > 5); | ||
|  | a | ||
|  | 0 | ||
|  | 1 | ||
|  | 2 | ||
|  | 3 | ||
|  | 4 | ||
|  | 5 | ||
|  | 7 | ||
|  | 15 | ||
|  | 16 | ||
|  | 17 | ||
|  | 18 | ||
|  | 19 | ||
|  | explain select * from t1 where NULL or not(a < 15 and a > 5); | ||
|  | id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra | ||
|  | 1	SIMPLE	t1	range	a	a	5	NULL	12	Using where; Using index | ||
|  | select * from t1 where NULL or not(a < 15 and a > 5); | ||
|  | a | ||
|  | 0 | ||
|  | 1 | ||
|  | 2 | ||
|  | 3 | ||
|  | 4 | ||
|  | 5 | ||
|  | 15 | ||
|  | 16 | ||
|  | 17 | ||
|  | 18 | ||
|  | 19 | ||
|  | explain select * from t1 where not(NULL and a > 5); | ||
|  | id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra | ||
|  | 1	SIMPLE	t1	range	a	a	5	NULL	6	Using where; Using index | ||
|  | select * from t1 where not(NULL and a > 5); | ||
|  | a | ||
|  | 0 | ||
|  | 1 | ||
|  | 2 | ||
|  | 3 | ||
|  | 4 | ||
|  | 5 | ||
|  | explain select * from t1 where not(NULL or a); | ||
|  | id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra | ||
|  | 1	SIMPLE	NULL	NULL	NULL	NULL	NULL	NULL	NULL	Impossible WHERE | ||
|  | select * from t1 where not(NULL or a); | ||
|  | a | ||
|  | explain select * from t1 where not(NULL and a); | ||
|  | id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra | ||
|  | 1	SIMPLE	t1	index	NULL	a	5	NULL	21	Using where; Using index | ||
|  | select * from t1 where not(NULL and a); | ||
|  | a | ||
|  | 0 | ||
|  | explain select * from t1 where not((a < 5 or a < 10) and (not(a > 16) or a > 17)); | ||
|  | id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra | ||
|  | 1	SIMPLE	t1	range	a	a	5	NULL	11	Using where; Using index | ||
|  | select * from t1 where not((a < 5 or a < 10) and (not(a > 16) or a > 17)); | ||
|  | a | ||
|  | 10 | ||
|  | 11 | ||
|  | 12 | ||
|  | 13 | ||
|  | 14 | ||
|  | 15 | ||
|  | 16 | ||
|  | 17 | ||
|  | 18 | ||
|  | 19 | ||
|  | explain select * from t1 where not((a < 5 and a < 10) and (not(a > 16) or a > 17)); | ||
|  | id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra | ||
|  | 1	SIMPLE	t1	range	a	a	5	NULL	15	Using where; Using index | ||
|  | select * from t1 where not((a < 5 and a < 10) and (not(a > 16) or a > 17)); | ||
|  | a | ||
|  | 5 | ||
|  | 6 | ||
|  | 7 | ||
|  | 8 | ||
|  | 9 | ||
|  | 10 | ||
|  | 11 | ||
|  | 12 | ||
|  | 13 | ||
|  | 14 | ||
|  | 15 | ||
|  | 16 | ||
|  | 17 | ||
|  | 18 | ||
|  | 19 | ||
|  | explain select * from t1 where ((a between 5 and 15) and (not(a like 10))); | ||
|  | id	select_type	table	type	possible_keys	key	key_len	ref	rows	Extra | ||
|  | 1	SIMPLE	t1	range	a	a	5	NULL	10	Using where; Using index | ||
|  | select * from t1 where ((a between 5 and 15) and (not(a like 10))); | ||
|  | a | ||
|  | 5 | ||
|  | 6 | ||
|  | 7 | ||
|  | 8 | ||
|  | 9 | ||
|  | 11 | ||
|  | 12 | ||
|  | 13 | ||
|  | 14 | ||
|  | 15 | ||
|  | delete from t1 where a > 3; | ||
|  | select a, not(not(a)) from t1; | ||
|  | a	not(not(a)) | ||
|  | NULL	NULL | ||
|  | 0	0 | ||
|  | 1	1 | ||
|  | 2	1 | ||
|  | 3	1 | ||
|  | explain extended select a, not(not(a)), not(a <= 2 and not(a)), not(a not like "1"), not (a not in (1,2)), not(a != 2) from t1 where not(not(a)) having not(not(a)); | ||
|  | id	select_type	table	type	possible_keys	key	key_len	ref	rows	filtered	Extra | ||
|  | 1	SIMPLE	t1	index	NULL	a	5	NULL	5	100.00	Using where; Using index | ||
|  | Warnings: | ||
|  | Note	1003	select `test`.`t1`.`a` AS `a`,(`test`.`t1`.`a` <> 0) AS `not(not(a))`,((`test`.`t1`.`a` > 2) or `test`.`t1`.`a`) AS `not(a <= 2 and not(a))`,(`test`.`t1`.`a` like '1') AS `not(a not like "1")`,(`test`.`t1`.`a` in (1,2)) AS `not (a not in (1,2))`,(`test`.`t1`.`a` = 2) AS `not(a != 2)` from `test`.`t1` where `test`.`t1`.`a` having `test`.`t1`.`a` | ||
|  | drop table t1; |