2003-01-06 00:48:59 +01:00
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t11,t12;
2002-06-01 22:35:36 +02:00
select (select 2);
(select 2)
2
2002-12-26 00:28:59 +01:00
explain select (select 2);
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL No tables used
Warnings:
Note 1247 Select 2 was reduced during optimisation
2002-10-14 13:33:42 +02:00
SELECT (SELECT 1) UNION SELECT (SELECT 2);
(SELECT 1)
1
2
2002-12-26 00:28:59 +01:00
explain SELECT (SELECT 1) UNION SELECT (SELECT 2);
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL No tables used
3 UNION NULL NULL NULL NULL NULL NULL NULL No tables used
Warnings:
Note 1247 Select 2 was reduced during optimisation
Note 1247 Select 4 was reduced during optimisation
2002-10-27 20:29:40 +01:00
SELECT (SELECT (SELECT 0 UNION SELECT 0));
(SELECT (SELECT 0 UNION SELECT 0))
0
2002-12-26 00:28:59 +01:00
explain SELECT (SELECT (SELECT 0 UNION SELECT 0));
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL No tables used
2003-04-04 13:33:01 +02:00
3 SUBQUERY NULL NULL NULL NULL NULL NULL NULL No tables used
2002-12-26 00:28:59 +01:00
4 UNION NULL NULL NULL NULL NULL NULL NULL No tables used
Warnings:
Note 1247 Select 2 was reduced during optimisation
2002-11-28 18:19:21 +01:00
SELECT (SELECT 1 FROM (SELECT 1) as b HAVING a=1) as a;
2003-06-04 17:28:51 +02:00
ERROR 42S22: Reference 'a' not supported (forward reference in item list)
2002-11-28 18:19:21 +01:00
SELECT (SELECT 1 FROM (SELECT 1) as b HAVING b=1) as a,(SELECT 1 FROM (SELECT 1) as c HAVING a=1) as b;
2003-06-04 17:28:51 +02:00
ERROR 42S22: Reference 'b' not supported (forward reference in item list)
2002-11-28 18:19:21 +01:00
SELECT (SELECT 1),MAX(1) FROM (SELECT 1) as a;
2002-11-23 20:55:39 +01:00
(SELECT 1) MAX(1)
1 1
2002-11-24 10:18:32 +01:00
SELECT (SELECT a) as a;
2003-06-04 17:28:51 +02:00
ERROR 42S22: Reference 'a' not supported (forward reference in item list)
2002-11-29 13:49:07 +01:00
EXPLAIN SELECT 1 FROM (SELECT 1 as a) as b HAVING (SELECT a)=1;
2002-11-24 20:10:52 +01:00
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY <derived2> system NULL NULL NULL NULL 1
2003-04-04 13:33:01 +02:00
3 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL No tables used
2002-12-14 16:43:01 +01:00
2 DERIVED NULL NULL NULL NULL NULL NULL NULL No tables used
2002-11-29 13:49:07 +01:00
SELECT 1 FROM (SELECT 1 as a) as b HAVING (SELECT a)=1;
2002-11-24 20:10:52 +01:00
1
1
SELECT (SELECT 1), a;
2003-06-04 17:28:51 +02:00
ERROR 42S22: Unknown column 'a' in 'field list'
2002-11-28 18:19:21 +01:00
SELECT 1 as a FROM (SELECT 1) as b HAVING (SELECT a)=1;
2002-11-25 00:38:56 +01:00
a
1
2002-11-28 18:19:21 +01:00
SELECT 1 FROM (SELECT (SELECT a) b) c;
2003-06-04 17:28:51 +02:00
ERROR 42S22: Unknown column 'a' in 'field list'
2002-12-23 17:25:25 +01:00
SELECT * FROM (SELECT 1 as id) b WHERE id IN (SELECT * FROM (SELECT 1 as id) c ORDER BY id);
2002-11-28 21:59:35 +01:00
id
1
2002-11-30 18:53:31 +01:00
SELECT * FROM (SELECT 1) a WHERE 1 IN (SELECT 1,1);
2003-06-04 17:28:51 +02:00
ERROR 21000: Cardinality error (more/less than 1 columns)
2002-11-29 09:44:30 +01:00
SELECT 1 IN (SELECT 1);
1 IN (SELECT 1)
1
2002-11-30 18:53:31 +01:00
SELECT 1 FROM (SELECT 1 as a) b WHERE 1 IN (SELECT (SELECT a));
2002-11-29 09:44:30 +01:00
1
1
2002-12-05 23:40:28 +01:00
select (SELECT 1 FROM (SELECT 1) a PROCEDURE ANALYSE(1));
2003-06-04 17:28:51 +02:00
ERROR HY000: Wrong usage of PROCEDURE and subquery
2002-12-05 23:40:28 +01:00
SELECT 1 FROM (SELECT 1) a PROCEDURE ANALYSE((SELECT 1));
2003-06-04 17:28:51 +02:00
ERROR HY000: Incorrect parameters to procedure 'ANALYSE'
2002-12-15 10:14:53 +01:00
SELECT (SELECT 1) as a FROM (SELECT 1) b WHERE (SELECT a) IS NULL;
a
SELECT (SELECT 1) as a FROM (SELECT 1) b WHERE (SELECT a) IS NOT NULL;
a
1
2002-12-19 06:38:33 +01:00
SELECT (SELECT 1,2,3) = ROW(1,2,3);
(SELECT 1,2,3) = ROW(1,2,3)
1
SELECT (SELECT 1,2,3) = ROW(1,2,1);
(SELECT 1,2,3) = ROW(1,2,1)
0
SELECT (SELECT 1,2,3) < ROW(1,2,1);
(SELECT 1,2,3) < ROW(1,2,1)
0
SELECT (SELECT 1,2,3) > ROW(1,2,1);
(SELECT 1,2,3) > ROW(1,2,1)
1
SELECT (SELECT 1,2,3) = ROW(1,2,NULL);
(SELECT 1,2,3) = ROW(1,2,NULL)
NULL
SELECT ROW(1,2,3) = (SELECT 1,2,3);
ROW(1,2,3) = (SELECT 1,2,3)
1
SELECT ROW(1,2,3) = (SELECT 1,2,1);
ROW(1,2,3) = (SELECT 1,2,1)
0
SELECT ROW(1,2,3) < (SELECT 1,2,1);
ROW(1,2,3) < (SELECT 1,2,1)
0
SELECT ROW(1,2,3) > (SELECT 1,2,1);
ROW(1,2,3) > (SELECT 1,2,1)
1
SELECT ROW(1,2,3) = (SELECT 1,2,NULL);
ROW(1,2,3) = (SELECT 1,2,NULL)
NULL
SELECT (SELECT 1.5,2,'a') = ROW(1.5,2,'a');
(SELECT 1.5,2,'a') = ROW(1.5,2,'a')
1
SELECT (SELECT 1.5,2,'a') = ROW(1.5,2,'b');
(SELECT 1.5,2,'a') = ROW(1.5,2,'b')
0
SELECT (SELECT 1.5,2,'a') = ROW('b',2,'b');
(SELECT 1.5,2,'a') = ROW('b',2,'b')
0
SELECT (SELECT 'b',2,'a') = ROW(1.5,2,'a');
(SELECT 'b',2,'a') = ROW(1.5,2,'a')
0
SELECT (SELECT 1.5,2,'a') = ROW(1.5,'c','a');
(SELECT 1.5,2,'a') = ROW(1.5,'c','a')
0
SELECT (SELECT 1.5,'c','a') = ROW(1.5,2,'a');
(SELECT 1.5,'c','a') = ROW(1.5,2,'a')
0
2003-01-21 12:55:26 +01:00
SELECT (SELECT * FROM (SELECT 'test' a,'test' b) a);
2003-06-04 17:28:51 +02:00
ERROR 21000: Cardinality error (more/less than 1 columns)
2003-01-30 13:35:07 +01:00
SELECT 1 as a,(SELECT a+a) b,(SELECT b);
a b (SELECT b)
1 2 2
2002-05-12 22:46:42 +02:00
create table t1 (a int);
create table t2 (a int, b int);
create table t3 (a int);
2003-06-04 17:28:51 +02:00
create table t4 (a int not null, b int not null);
2002-05-12 22:46:42 +02:00
insert into t1 values (2);
insert into t2 values (1,7),(2,7);
insert into t4 values (4,8),(3,8),(5,9);
2002-11-21 10:01:33 +01:00
select (select a from t1 where t1.a = a1) as a2, (select b from t2 where t2.b=a2) as a1;
2003-06-04 17:28:51 +02:00
ERROR 42S22: Reference 'a1' not supported (forward reference in item list)
2002-05-26 21:50:32 +02:00
select (select a from t1 where t1.a=t2.a), a from t2;
(select a from t1 where t1.a=t2.a) a
NULL 1
2 2
select (select a from t1 where t1.a=t2.b), a from t2;
(select a from t1 where t1.a=t2.b) a
NULL 1
NULL 2
2002-05-12 22:46:42 +02:00
select (select a from t1), a from t2;
(select a from t1) a
2 1
2 2
select (select a from t3), a from t2;
(select a from t3) a
NULL 1
NULL 2
select * from t2 where t2.a=(select a from t1);
a b
2 7
insert into t3 values (6),(7),(3);
2002-06-01 22:35:36 +02:00
select * from t2 where t2.b=(select a from t3 order by 1 desc limit 1);
2002-05-12 22:46:42 +02:00
a b
1 7
2 7
2003-01-25 12:19:46 +01:00
(select * from t2 where t2.b=(select a from t3 order by 1 desc limit 1)) union (select * from t4 order by a limit 2) limit 3;
2002-05-12 22:46:42 +02:00
a b
1 7
2 7
3 8
2003-01-25 12:19:46 +01:00
(select * from t2 where t2.b=(select a from t3 order by 1 desc limit 1)) union (select * from t4 where t4.b=(select max(t2.a)*4 from t2) order by a);
2002-06-01 22:35:36 +02:00
a b
1 7
2 7
3 8
4 8
2003-01-25 12:19:46 +01:00
explain (select * from t2 where t2.b=(select a from t3 order by 1 desc limit 1)) union (select * from t4 where t4.b=(select max(t2.a)*4 from t2) order by a);
2002-09-26 22:08:22 +02:00
id select_type table type possible_keys key key_len ref rows Extra
2002-11-21 21:25:53 +01:00
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where
2003-04-04 13:33:01 +02:00
2 SUBQUERY t3 ALL NULL NULL NULL NULL 3 Using filesort
2002-11-21 21:25:53 +01:00
3 UNION t4 ALL NULL NULL NULL NULL 3 Using where; Using filesort
2003-04-04 13:33:01 +02:00
4 SUBQUERY t2 ALL NULL NULL NULL NULL 2
2002-05-28 21:38:17 +02:00
select (select a from t3 where a<t2.a*4 order by 1 desc limit 1), a from t2;
(select a from t3 where a<t2.a*4 order by 1 desc limit 1) a
3 1
7 2
2002-06-01 22:35:36 +02:00
select (select t3.a from t3 where a<8 order by 1 desc limit 1), a from
(select * from t2 where a>1) as tt;
(select t3.a from t3 where a<8 order by 1 desc limit 1) a
7 2
2002-09-26 22:08:22 +02:00
explain select (select t3.a from t3 where a<8 order by 1 desc limit 1), a from
(select * from t2 where a>1) as tt;
id select_type table type possible_keys key key_len ref rows Extra
2002-10-03 17:47:04 +02:00
1 PRIMARY <derived3> system NULL NULL NULL NULL 1
2002-11-21 21:25:53 +01:00
3 DERIVED t2 ALL NULL NULL NULL NULL 2 Using where
2003-04-04 13:33:01 +02:00
2 SUBQUERY t3 ALL NULL NULL NULL NULL 3 Using where; Using filesort
2002-06-01 22:35:36 +02:00
select * from t1 where t1.a=(select t2.a from t2 where t2.b=(select max(a) from t3) order by 1 desc limit 1);
a
2
select * from t1 where t1.a=(select t2.a from t2 where t2.b=(select max(a) from t3 where t3.a > t1.a) order by 1 desc limit 1);
a
2
select * from t1 where t1.a=(select t2.a from t2 where t2.b=(select max(a) from t3 where t3.a < t1.a) order by 1 desc limit 1);
a
select b,(select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2) from t4;
b (select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2)
8 7.5000
2002-07-01 13:14:51 +02:00
8 4.5000
9 7.5000
2002-09-26 22:08:22 +02:00
explain select b,(select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2) from t4;
id select_type table type possible_keys key key_len ref rows Extra
2002-10-03 17:47:04 +02:00
1 PRIMARY t4 ALL NULL NULL NULL NULL 3
2003-04-04 13:33:01 +02:00
2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 2
3 DEPENDENT SUBQUERY t3 ALL NULL NULL NULL NULL 3 Using where
2002-06-19 16:52:44 +02:00
select * from t3 where exists (select * from t2 where t2.b=t3.a);
a
7
select * from t3 where not exists (select * from t2 where t2.b=t3.a);
a
6
3
2002-10-27 22:27:00 +01:00
select * from t3 where a in (select b from t2);
a
7
select * from t3 where a not in (select b from t2);
a
6
3
2002-11-07 22:45:19 +01:00
select * from t3 where a = some (select b from t2);
a
7
select * from t3 where a <> any (select b from t2);
a
6
3
select * from t3 where a = all (select b from t2);
a
7
select * from t3 where a <> all (select b from t2);
a
6
3
insert into t2 values (100, 5);
select * from t3 where a < any (select b from t2);
a
6
3
select * from t3 where a < all (select b from t2);
a
3
select * from t3 where a >= any (select b from t2);
a
6
7
select * from t3 where a >= all (select b from t2);
a
7
delete from t2 where a=100;
2002-10-27 22:27:00 +01:00
select * from t3 where a in (select a,b from t2);
2003-06-04 17:28:51 +02:00
ERROR 21000: Cardinality error (more/less than 1 columns)
2002-10-27 22:27:00 +01:00
select * from t3 where a in (select * from t2);
2003-06-04 17:28:51 +02:00
ERROR 21000: Cardinality error (more/less than 1 columns)
insert into t4 values (12,7),(1,7),(10,9),(9,6),(7,6),(3,9),(1,10);
select b,max(a) as ma from t4 group by b having b < (select max(t2.a) from t2 where t2.b=t4.b);
2002-07-01 13:14:51 +02:00
b ma
2003-06-04 17:28:51 +02:00
insert into t2 values (2,10);
select b,max(a) as ma from t4 group by b having ma < (select max(t2.a) from t2 where t2.b=t4.b);
b ma
10 1
delete from t2 where a=2 and b=10;
select b,max(a) as ma from t4 group by b having b >= (select max(t2.a) from t2 where t2.b=t4.b);
2002-07-01 13:14:51 +02:00
b ma
7 12
2002-09-03 08:50:36 +02:00
create table t5 (a int);
select (select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a), a from t2;
(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a) a
NULL 1
2 2
insert into t5 values (5);
select (select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a), a from t2;
(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a) a
NULL 1
2 2
insert into t5 values (2);
select (select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a), a from t2;
(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a) a
NULL 1
2 2
2002-09-26 22:08:22 +02:00
explain select (select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a), a from t2;
id select_type table type possible_keys key key_len ref rows Extra
2002-10-03 17:47:04 +02:00
1 PRIMARY t2 ALL NULL NULL NULL NULL 2
2003-04-04 13:33:01 +02:00
2 DEPENDENT SUBQUERY t1 system NULL NULL NULL NULL 1
2002-11-21 21:25:53 +01:00
3 DEPENDENT UNION t5 ALL NULL NULL NULL NULL 2 Using where
2002-09-03 08:50:36 +02:00
select (select a from t1 where t1.a=t2.a union all select a from t5 where t5.a=t2.a), a from t2;
2003-06-04 17:28:51 +02:00
ERROR 21000: Subselect returns more than 1 record
2002-11-24 16:41:34 +01:00
create table t6 (patient_uq int, clinic_uq int, index i1 (clinic_uq));
create table t7( uq int primary key, name char(25));
insert into t7 values(1,"Oblastnaia bolnitsa"),(2,"Bolnitsa Krasnogo Kresta");
insert into t6 values (1,1),(1,2),(2,2),(1,3);
select * from t6 where exists (select * from t7 where uq = clinic_uq);
2002-07-31 00:26:51 +02:00
patient_uq clinic_uq
1 1
1 2
2 2
2003-05-06 00:38:38 +02:00
explain select * from t6 where exists (select * from t7 where uq = clinic_uq);
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t6 ALL NULL NULL NULL NULL 4 Using where
2003-06-04 17:28:51 +02:00
2 DEPENDENT SUBQUERY t7 eq_ref PRIMARY PRIMARY 4 test.t6.clinic_uq 1
2002-10-08 13:50:12 +02:00
select * from t1 where a= (select a from t2,t4 where t2.b=t4.b);
2003-06-04 17:28:51 +02:00
ERROR 23000: Column: 'a' in field list is ambiguous
2002-09-28 17:34:56 +02:00
drop table if exists t1,t2,t3;
CREATE TABLE t3 (a varchar(20),b char(1) NOT NULL default '0');
INSERT INTO t3 VALUES ('W','a'),('A','c'),('J','b');
CREATE TABLE t2 (a varchar(20),b int NOT NULL default '0');
INSERT INTO t2 VALUES ('W','1'),('A','3'),('J','2');
CREATE TABLE t1 (a varchar(20),b date NOT NULL default '0000-00-00');
INSERT INTO t1 VALUES ('W','1732-02-22'),('A','1735-10-30'),('J','1743-04-13');
SELECT * FROM t1 WHERE b = (SELECT MIN(b) FROM t1);
a b
W 1732-02-22
SELECT * FROM t2 WHERE b = (SELECT MIN(b) FROM t2);
a b
W 1
SELECT * FROM t3 WHERE b = (SELECT MIN(b) FROM t3);
a b
W a
2002-11-24 16:41:34 +01:00
CREATE TABLE `t8` (
2002-10-07 21:21:17 +02:00
`pseudo` varchar(35) character set latin1 NOT NULL default '',
`email` varchar(60) character set latin1 NOT NULL default '',
PRIMARY KEY (`pseudo`),
UNIQUE KEY `email` (`email`)
) TYPE=MyISAM CHARSET=latin1 ROW_FORMAT=DYNAMIC;
2002-11-24 16:41:34 +01:00
INSERT INTO t8 (pseudo,email) VALUES ('joce','test');
INSERT INTO t8 (pseudo,email) VALUES ('joce1','test1');
INSERT INTO t8 (pseudo,email) VALUES ('2joce1','2test1');
EXPLAIN SELECT pseudo,(SELECT email FROM t8 WHERE pseudo=(SELECT pseudo FROM t8 WHERE pseudo='joce')) FROM t8 WHERE pseudo=(SELECT pseudo FROM t8 WHERE pseudo='joce');
2002-10-13 13:25:16 +02:00
id select_type table type possible_keys key key_len ref rows Extra
2002-11-24 16:41:34 +01:00
1 PRIMARY t8 const PRIMARY PRIMARY 35 const 1
2003-04-04 13:33:01 +02:00
4 SUBQUERY t8 const PRIMARY PRIMARY 35 1
2 SUBQUERY t8 const PRIMARY PRIMARY 35 const 1
3 SUBQUERY t8 const PRIMARY PRIMARY 35 1
2002-11-24 16:41:34 +01:00
SELECT pseudo FROM t8 WHERE pseudo=(SELECT pseudo,email FROM
t8 WHERE pseudo='joce');
2003-06-04 17:28:51 +02:00
ERROR 21000: Cardinality error (more/less than 1 columns)
2002-11-24 16:41:34 +01:00
SELECT pseudo FROM t8 WHERE pseudo=(SELECT * FROM t8 WHERE
2002-10-12 00:09:47 +02:00
pseudo='joce');
2003-06-04 17:28:51 +02:00
ERROR 21000: Cardinality error (more/less than 1 columns)
2002-11-24 16:41:34 +01:00
SELECT pseudo FROM t8 WHERE pseudo=(SELECT pseudo FROM t8 WHERE pseudo='joce');
2002-10-11 16:00:11 +02:00
pseudo
joce
2002-11-24 16:41:34 +01:00
SELECT pseudo FROM t8 WHERE pseudo=(SELECT pseudo FROM t8 WHERE pseudo LIKE '%joce%');
2003-06-04 17:28:51 +02:00
ERROR 21000: Subselect returns more than 1 record
2002-11-24 16:41:34 +01:00
drop table if exists t1,t2,t3,t4,t5,t6,t7,t8;
CREATE TABLE `t1` (
2002-10-15 23:42:59 +02:00
`topic` mediumint(8) unsigned NOT NULL default '0',
`date` date NOT NULL default '0000-00-00',
`pseudo` varchar(35) character set latin1 NOT NULL default '',
PRIMARY KEY (`pseudo`,`date`,`topic`),
KEY `topic` (`topic`)
) TYPE=MyISAM ROW_FORMAT=DYNAMIC;
2002-11-24 16:41:34 +01:00
INSERT INTO t1 (topic,date,pseudo) VALUES
2002-10-15 23:42:59 +02:00
('43506','2002-10-02','joce'),('40143','2002-08-03','joce');
2002-11-24 16:41:34 +01:00
EXPLAIN SELECT DISTINCT date FROM t1 WHERE date='2002-08-03';
2002-10-15 23:42:59 +02:00
id select_type table type possible_keys key key_len ref rows Extra
2002-11-24 16:41:34 +01:00
1 SIMPLE t1 index NULL PRIMARY 41 NULL 2 Using where; Using index
EXPLAIN SELECT (SELECT DISTINCT date FROM t1 WHERE date='2002-08-03');
2002-10-15 23:42:59 +02:00
id select_type table type possible_keys key key_len ref rows Extra
2002-12-14 16:43:01 +01:00
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL No tables used
2003-04-04 13:33:01 +02:00
2 SUBQUERY t1 index NULL PRIMARY 41 NULL 2 Using where; Using index
2002-11-24 16:41:34 +01:00
SELECT DISTINCT date FROM t1 WHERE date='2002-08-03';
2002-10-23 22:36:11 +02:00
date
2002-08-03
2002-11-24 16:41:34 +01:00
SELECT (SELECT DISTINCT date FROM t1 WHERE date='2002-08-03');
(SELECT DISTINCT date FROM t1 WHERE date='2002-08-03')
2002-10-23 22:36:11 +02:00
2002-08-03
2002-11-24 16:41:34 +01:00
SELECT 1 FROM t1 WHERE 1=(SELECT 1 UNION SELECT 1) UNION ALL SELECT 1;
2002-10-26 19:18:37 +02:00
1
1
1
1
2002-11-24 16:41:34 +01:00
SELECT 1 FROM t1 WHERE 1=(SELECT 1 UNION ALL SELECT 1) UNION SELECT 1;
2003-06-04 17:28:51 +02:00
ERROR 21000: Subselect returns more than 1 record
2002-11-24 16:41:34 +01:00
EXPLAIN SELECT 1 FROM t1 WHERE 1=(SELECT 1 UNION SELECT 1);
2002-10-26 19:18:37 +02:00
id select_type table type possible_keys key key_len ref rows Extra
2002-11-24 16:41:34 +01:00
1 PRIMARY t1 index NULL topic 3 NULL 2 Using index
2003-04-04 13:33:01 +02:00
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL No tables used
2002-12-14 16:43:01 +01:00
3 UNION NULL NULL NULL NULL NULL NULL NULL No tables used
2002-11-27 11:31:32 +01:00
drop table t1;
2002-11-24 16:41:34 +01:00
CREATE TABLE `t1` (
2002-11-10 23:15:38 +01:00
`numeropost` mediumint(8) unsigned NOT NULL auto_increment,
`maxnumrep` int(10) unsigned NOT NULL default '0',
PRIMARY KEY (`numeropost`),
UNIQUE KEY `maxnumrep` (`maxnumrep`)
) TYPE=MyISAM ROW_FORMAT=FIXED;
2002-11-24 16:41:34 +01:00
INSERT INTO t1 (numeropost,maxnumrep) VALUES (40143,1),(43506,2);
CREATE TABLE `t2` (
2002-11-10 23:15:38 +01:00
`mot` varchar(30) NOT NULL default '',
`topic` mediumint(8) unsigned NOT NULL default '0',
`date` date NOT NULL default '0000-00-00',
`pseudo` varchar(35) NOT NULL default '',
PRIMARY KEY (`mot`,`pseudo`,`date`,`topic`)
) TYPE=MyISAM ROW_FORMAT=DYNAMIC;
2002-11-24 16:41:34 +01:00
INSERT INTO t2 (mot,topic,date,pseudo) VALUES ('joce','40143','2002-10-22','joce'), ('joce','43506','2002-10-22','joce');
select numeropost as a FROM t1 GROUP BY (SELECT 1 FROM t1 HAVING a=1);
2002-11-13 00:14:39 +01:00
a
40143
2002-11-24 16:41:34 +01:00
SELECT numeropost,maxnumrep FROM t1 WHERE exists (SELECT 1 FROM t2 WHERE (mot='joce') AND date >= '2002-10-21' AND t1.numeropost = t2.topic) ORDER BY maxnumrep DESC LIMIT 0, 20;
2002-11-10 23:15:38 +01:00
numeropost maxnumrep
43506 2
40143 1
2002-11-28 18:19:21 +01:00
SELECT (SELECT 1) as a FROM (SELECT 1 FROM t1 HAVING a=1) b;
2003-06-04 17:28:51 +02:00
ERROR 42S22: Unknown column 'a' in 'having clause'
2002-11-27 11:31:32 +01:00
SELECT 1 IN (SELECT 1 FROM t2 HAVING a);
2003-06-04 17:28:51 +02:00
ERROR 42S22: Unknown column 'a' in 'having clause'
2003-01-28 13:48:12 +01:00
SELECT * from t2 where topic IN (SELECT topic FROM t2 GROUP BY topic);
2002-11-27 11:31:32 +01:00
mot topic date pseudo
joce 40143 2002-10-22 joce
2003-01-28 13:48:12 +01:00
joce 43506 2002-10-22 joce
SELECT * from t2 where topic IN (SELECT topic FROM t2 GROUP BY topic HAVING topic < 4100);
2002-11-27 11:31:32 +01:00
mot topic date pseudo
SELECT * from t2 where topic IN (SELECT SUM(topic) FROM t1);
mot topic date pseudo
2003-01-28 13:48:12 +01:00
SELECT * from t2 where topic = any (SELECT topic FROM t2 GROUP BY topic);
2002-11-27 11:31:32 +01:00
mot topic date pseudo
joce 40143 2002-10-22 joce
2003-01-28 13:48:12 +01:00
joce 43506 2002-10-22 joce
SELECT * from t2 where topic = any (SELECT topic FROM t2 GROUP BY topic HAVING topic < 4100);
2002-11-27 11:31:32 +01:00
mot topic date pseudo
SELECT * from t2 where topic = any (SELECT SUM(topic) FROM t1);
mot topic date pseudo
2003-01-28 13:48:12 +01:00
SELECT * from t2 where topic = all (SELECT topic FROM t2 GROUP BY topic);
2002-11-27 11:31:32 +01:00
mot topic date pseudo
2003-01-28 13:48:12 +01:00
SELECT * from t2 where topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 4100);
2002-11-27 11:31:32 +01:00
mot topic date pseudo
joce 40143 2002-10-22 joce
2003-01-25 01:25:52 +01:00
joce 43506 2002-10-22 joce
2003-01-28 13:48:12 +01:00
SELECT *, topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 4100) from t2;
mot topic date pseudo topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 4100)
joce 40143 2002-10-22 joce 1
joce 43506 2002-10-22 joce 1
2002-11-27 11:31:32 +01:00
SELECT * from t2 where topic = all (SELECT SUM(topic) FROM t2);
mot topic date pseudo
SELECT * from t2 where topic <> any (SELECT SUM(topic) FROM t2);
mot topic date pseudo
joce 40143 2002-10-22 joce
joce 43506 2002-10-22 joce
2003-01-28 13:48:12 +01:00
SELECT * from t2 where topic IN (SELECT topic FROM t2 GROUP BY topic HAVING topic < 41000);
mot topic date pseudo
joce 40143 2002-10-22 joce
SELECT * from t2 where topic = any (SELECT topic FROM t2 GROUP BY topic HAVING topic < 41000);
mot topic date pseudo
joce 40143 2002-10-22 joce
SELECT * from t2 where topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 41000);
mot topic date pseudo
joce 40143 2002-10-22 joce
SELECT *, topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 41000) from t2;
mot topic date pseudo topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 41000)
joce 40143 2002-10-22 joce 1
joce 43506 2002-10-22 joce 0
2002-11-27 11:31:32 +01:00
drop table t1,t2;
2002-11-24 16:41:34 +01:00
CREATE TABLE `t1` (
2002-11-13 00:14:39 +01:00
`numeropost` mediumint(8) unsigned NOT NULL auto_increment,
`maxnumrep` int(10) unsigned NOT NULL default '0',
PRIMARY KEY (`numeropost`),
UNIQUE KEY `maxnumrep` (`maxnumrep`)
) TYPE=MyISAM ROW_FORMAT=FIXED;
2002-11-24 16:41:34 +01:00
INSERT INTO t1 (numeropost,maxnumrep) VALUES (1,0),(2,1);
select numeropost as a FROM t1 GROUP BY (SELECT 1 FROM t1 HAVING a=1);
2003-06-04 17:28:51 +02:00
ERROR 21000: Subselect returns more than 1 record
2002-11-24 16:41:34 +01:00
select numeropost as a FROM t1 ORDER BY (SELECT 1 FROM t1 HAVING a=1);
2003-06-04 17:28:51 +02:00
ERROR 21000: Subselect returns more than 1 record
2002-11-24 16:41:34 +01:00
drop table t1;
2003-03-11 00:06:28 +01:00
create table t1 (a int);
insert into t1 values (1),(2),(3);
(select * from t1) union (select * from t1) order by (select a from t1 limit 1);
a
1
2
3
drop table t1;
2002-11-24 16:41:34 +01:00
CREATE TABLE t1 (field char(1) NOT NULL DEFAULT 'b');
INSERT INTO t1 VALUES ();
2002-11-28 18:19:21 +01:00
SELECT field FROM t1 WHERE 1=(SELECT 1 UNION ALL SELECT 1 FROM (SELECT 1) a HAVING field='b');
2003-06-04 17:28:51 +02:00
ERROR 21000: Subselect returns more than 1 record
2002-11-24 16:41:34 +01:00
drop table t1;
CREATE TABLE `t1` (
2002-11-17 21:23:57 +01:00
`numeropost` mediumint(8) unsigned NOT NULL default '0',
`numreponse` int(10) unsigned NOT NULL auto_increment,
`pseudo` varchar(35) NOT NULL default '',
PRIMARY KEY (`numeropost`,`numreponse`),
UNIQUE KEY `numreponse` (`numreponse`),
KEY `pseudo` (`pseudo`,`numeropost`)
) TYPE=MyISAM;
2002-11-24 16:41:34 +01:00
SELECT (SELECT numeropost FROM t1 HAVING numreponse=a),numreponse FROM (SELECT * FROM t1) as a;
2003-06-04 17:28:51 +02:00
ERROR 42S22: Reference 'numreponse' not supported (forward reference in item list)
2002-11-24 16:41:34 +01:00
SELECT numreponse, (SELECT numeropost FROM t1 HAVING numreponse=a) FROM (SELECT * FROM t1) as a;
2003-06-04 17:28:51 +02:00
ERROR 42S22: Unknown column 'a' in 'having clause'
2002-11-24 16:41:34 +01:00
SELECT numreponse, (SELECT numeropost FROM t1 HAVING numreponse=1) FROM (SELECT * FROM t1) as a;
numreponse (SELECT numeropost FROM t1 HAVING numreponse=1)
INSERT INTO t1 (numeropost,numreponse,pseudo) VALUES (1,1,'joce'),(1,2,'joce'),(1,3,'test');
EXPLAIN SELECT numreponse FROM t1 WHERE numeropost='1' AND numreponse=(SELECT 1 FROM t1 WHERE numeropost='1');
2003-06-04 17:28:51 +02:00
ERROR 21000: Subselect returns more than 1 record
2002-11-24 16:41:34 +01:00
EXPLAIN SELECT MAX(numreponse) FROM t1 WHERE numeropost='1';
2002-11-17 21:23:57 +01:00
id select_type table type possible_keys key key_len ref rows Extra
2002-12-14 16:43:01 +01:00
1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
2002-11-24 16:41:34 +01:00
EXPLAIN SELECT numreponse FROM t1 WHERE numeropost='1' AND numreponse=(SELECT MAX(numreponse) FROM t1 WHERE numeropost='1');
2002-11-17 21:23:57 +01:00
id select_type table type possible_keys key key_len ref rows Extra
2002-11-24 16:41:34 +01:00
1 PRIMARY t1 const PRIMARY,numreponse PRIMARY 7 const,const 1
2003-04-04 13:33:01 +02:00
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
2002-11-24 16:41:34 +01:00
drop table t1;
2002-11-25 00:38:56 +01:00
CREATE TABLE t1 (a int(1));
INSERT INTO t1 VALUES (1);
2002-11-29 13:49:07 +01:00
SELECT 1 FROM (SELECT a FROM t1) b HAVING (SELECT b.a)=1;
2002-11-25 00:38:56 +01:00
1
1
drop table t1;
2002-10-24 21:59:29 +02:00
create table t1 (a int NOT NULL, b int, primary key (a));
create table t2 (a int NOT NULL, b int, primary key (a));
insert into t1 values (0, 10),(1, 11),(2, 12);
insert into t2 values (1, 21),(2, 22),(3, 23);
select * from t1;
a b
0 10
1 11
2 12
2002-11-30 18:26:18 +01:00
update t1 set b= (select b from t1);
2003-06-04 17:28:51 +02:00
ERROR HY000: You can't specify target table 't1' for update in FROM clause
2002-11-30 23:11:22 +01:00
update t1 set b= (select b from t2);
2003-06-04 17:28:51 +02:00
ERROR 21000: Subselect returns more than 1 record
2002-10-24 21:59:29 +02:00
update t1 set b= (select b from t2 where t1.a = t2.a);
select * from t1;
a b
0 NULL
1 21
2 22
drop table t1, t2;
2002-11-25 20:27:14 +01:00
create table t1 (a int NOT NULL, b int, primary key (a));
create table t2 (a int NOT NULL, b int, primary key (a));
insert into t1 values (0, 10),(1, 11),(2, 12);
insert into t2 values (1, 21),(2, 12),(3, 23);
select * from t1;
a b
0 10
1 11
2 12
select * from t1 where b = (select b from t2 where t1.a = t2.a);
a b
2 12
2002-11-30 18:26:18 +01:00
delete from t1 where b = (select b from t1);
2003-06-04 17:28:51 +02:00
ERROR HY000: You can't specify target table 't1' for update in FROM clause
2002-11-30 23:11:22 +01:00
delete from t1 where b = (select b from t2);
2003-06-04 17:28:51 +02:00
ERROR 21000: Subselect returns more than 1 record
2002-11-25 20:27:14 +01:00
delete from t1 where b = (select b from t2 where t1.a = t2.a);
select * from t1;
a b
0 10
1 11
drop table t1, t2;
2002-11-26 21:33:33 +01:00
create table t11 (a int NOT NULL, b int, primary key (a));
create table t12 (a int NOT NULL, b int, primary key (a));
create table t2 (a int NOT NULL, b int, primary key (a));
insert into t11 values (0, 10),(1, 11),(2, 12);
insert into t12 values (33, 10),(22, 11),(2, 12);
insert into t2 values (1, 21),(2, 12),(3, 23);
select * from t11;
a b
0 10
1 11
2 12
select * from t12;
a b
33 10
22 11
2 12
2002-11-30 18:26:18 +01:00
delete t11.*, t12.* from t11,t12 where t11.a = t12.a and t11.b = (select b from t12 where t11.a = t12.a);
2003-06-04 17:28:51 +02:00
ERROR HY000: You can't specify target table 't12' for update in FROM clause
2002-11-30 23:11:22 +01:00
delete t11.*, t12.* from t11,t12 where t11.a = t12.a and t11.b = (select b from t2);
2003-06-04 17:28:51 +02:00
ERROR 21000: Subselect returns more than 1 record
2002-11-26 21:33:33 +01:00
delete t11.*, t12.* from t11,t12 where t11.a = t12.a and t11.b = (select b from t2 where t11.a = t2.a);
select * from t11;
a b
0 10
1 11
select * from t12;
a b
33 10
22 11
drop table t11, t12, t2;
2002-11-26 00:00:05 +01:00
CREATE TABLE t1 (x int);
create table t2 (a int);
2003-05-21 22:35:51 +02:00
create table t3 (b int);
2002-11-26 00:00:05 +01:00
insert into t2 values (1);
2002-11-30 23:11:22 +01:00
insert into t3 values (1),(2);
2002-11-30 18:26:18 +01:00
INSERT INTO t1 (x) VALUES ((SELECT x FROM t1));
2003-06-04 17:28:51 +02:00
ERROR HY000: You can't specify target table 't1' for update in FROM clause
2003-05-21 22:35:51 +02:00
INSERT INTO t1 (x) VALUES ((SELECT b FROM t3));
2003-06-04 17:28:51 +02:00
ERROR 21000: Subselect returns more than 1 record
2002-11-26 00:00:05 +01:00
INSERT INTO t1 (x) VALUES ((SELECT a FROM t2));
select * from t1;
x
1
insert into t2 values (1);
INSERT DELAYED INTO t1 (x) VALUES ((SELECT SUM(a) FROM t2));
select * from t1;
x
1
2
INSERT INTO t1 (x) select (SELECT SUM(a)+1 FROM t2) FROM t2;
select * from t1;
x
1
2
3
3
INSERT INTO t1 (x) select (SELECT SUM(x)+2 FROM t1) FROM t2;
2003-05-21 22:35:51 +02:00
Unknown column 'x' in 'field list'
INSERT DELAYED INTO t1 (x) VALUES ((SELECT SUM(a) FROM t2));
2002-11-26 00:00:05 +01:00
select * from t1;
x
1
2
3
3
2003-05-21 22:35:51 +02:00
2
2002-11-30 23:11:22 +01:00
drop table t1, t2, t3;
2002-11-26 00:00:05 +01:00
CREATE TABLE t1 (x int not null, y int, primary key (x));
create table t2 (a int);
2002-11-30 23:11:22 +01:00
create table t3 (a int);
2002-11-26 00:00:05 +01:00
insert into t2 values (1);
2002-11-30 23:11:22 +01:00
insert into t3 values (1),(2);
2002-11-26 00:00:05 +01:00
select * from t1;
x y
2002-11-30 18:26:18 +01:00
replace into t1 (x, y) VALUES ((SELECT x FROM t1), (SELECT a+1 FROM t2));
2003-06-04 17:28:51 +02:00
ERROR HY000: You can't specify target table 't1' for update in FROM clause
2002-11-30 23:11:22 +01:00
replace into t1 (x, y) VALUES ((SELECT a FROM t3), (SELECT a+1 FROM t2));
2003-06-04 17:28:51 +02:00
ERROR 21000: Subselect returns more than 1 record
2002-11-26 00:00:05 +01:00
replace into t1 (x, y) VALUES ((SELECT a FROM t2), (SELECT a+1 FROM t2));
select * from t1;
x y
1 2
replace into t1 (x, y) VALUES ((SELECT a FROM t2), (SELECT a+2 FROM t2));
select * from t1;
x y
1 3
replace DELAYED into t1 (x, y) VALUES ((SELECT a+3 FROM t2), (SELECT a FROM t2));
select * from t1;
x y
1 3
4 1
replace DELAYED into t1 (x, y) VALUES ((SELECT a+3 FROM t2), (SELECT a+1 FROM t2));
select * from t1;
x y
1 3
4 2
replace LOW_PRIORITY into t1 (x, y) VALUES ((SELECT a+1 FROM t2), (SELECT a FROM t2));
select * from t1;
x y
1 3
4 2
2 1
2002-11-30 23:11:22 +01:00
drop table t1, t2, t3;
2002-11-30 18:53:31 +01:00
SELECT * FROM (SELECT 1) b WHERE 1 IN (SELECT *);
2003-06-04 17:28:51 +02:00
ERROR HY000: No tables used
2003-02-10 16:59:16 +01:00
CREATE TABLE t2 (id int(11) default NULL, KEY id (id)) TYPE=MyISAM CHARSET=latin1;
INSERT INTO t2 VALUES (1),(2);
SELECT * FROM t2 WHERE id IN (SELECT 1);
2002-11-28 18:29:26 +01:00
id
1
2003-02-10 16:59:16 +01:00
EXPLAIN SELECT * FROM t2 WHERE id IN (SELECT 1);
2002-11-28 18:29:26 +01:00
id select_type table type possible_keys key key_len ref rows Extra
2003-02-10 16:59:16 +01:00
1 PRIMARY t2 ref id id 5 const 1 Using where; Using index
2002-11-28 18:29:26 +01:00
Warnings:
2002-11-30 18:53:31 +01:00
Note 1247 Select 2 was reduced during optimisation
2003-02-10 16:59:16 +01:00
SELECT * FROM t2 WHERE id IN (SELECT 1 UNION SELECT 3);
2002-11-28 18:29:26 +01:00
id
1
2003-02-10 16:59:16 +01:00
SELECT * FROM t2 WHERE id IN (SELECT 1+(select 1));
2002-11-28 22:31:48 +01:00
id
2
2003-02-10 16:59:16 +01:00
EXPLAIN SELECT * FROM t2 WHERE id IN (SELECT 1+(select 1));
2002-11-28 22:31:48 +01:00
id select_type table type possible_keys key key_len ref rows Extra
2003-02-10 16:59:16 +01:00
1 PRIMARY t2 ref id id 5 const 1 Using where; Using index
2003-04-04 13:33:01 +02:00
3 SUBQUERY NULL NULL NULL NULL NULL NULL NULL No tables used
2002-11-28 22:31:48 +01:00
Warnings:
2002-12-26 00:28:59 +01:00
Note 1247 Select 3 was reduced during optimisation
2002-11-30 18:53:31 +01:00
Note 1247 Select 2 was reduced during optimisation
2003-02-10 16:59:16 +01:00
EXPLAIN SELECT * FROM t2 WHERE id IN (SELECT 1 UNION SELECT 3);
2002-11-28 18:29:26 +01:00
id select_type table type possible_keys key key_len ref rows Extra
2003-02-10 16:59:16 +01:00
1 PRIMARY t2 index NULL id 5 NULL 2 Using where; Using index
2003-04-04 13:33:01 +02:00
2 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL No tables used
2002-12-25 13:33:28 +01:00
3 DEPENDENT UNION NULL NULL NULL NULL NULL NULL NULL No tables used
2003-02-10 16:59:16 +01:00
SELECT * FROM t2 WHERE id IN (SELECT 5 UNION SELECT 3);
2002-11-28 18:29:26 +01:00
id
2003-02-10 16:59:16 +01:00
SELECT * FROM t2 WHERE id IN (SELECT 5 UNION SELECT 2);
2002-11-28 18:29:26 +01:00
id
2
2003-02-10 16:59:16 +01:00
INSERT INTO t2 VALUES ((SELECT * FROM t2));
2003-06-04 17:28:51 +02:00
ERROR HY000: You can't specify target table 't2' for update in FROM clause
2003-05-27 23:49:24 +02:00
INSERT INTO t2 VALUES ((SELECT id FROM t2));
2003-06-04 17:28:51 +02:00
ERROR HY000: You can't specify target table 't2' for update in FROM clause
2003-02-10 16:59:16 +01:00
SELECT * FROM t2;
2002-11-30 18:26:18 +01:00
id
1
2
2002-11-30 23:11:22 +01:00
CREATE TABLE t1 (id int(11) default NULL, KEY id (id)) TYPE=MyISAM CHARSET=latin1;
INSERT INTO t1 values (1),(1);
2003-02-10 16:59:16 +01:00
UPDATE t2 SET id=(SELECT * FROM t1);
2003-06-04 17:28:51 +02:00
ERROR 21000: Subselect returns more than 1 record
2003-02-10 16:59:16 +01:00
drop table t2, t1;
create table t1 (a int);
insert into t1 values (1),(2),(3);
select 1 IN (SELECT * from t1);
1 IN (SELECT * from t1)
1
select 10 IN (SELECT * from t1);
10 IN (SELECT * from t1)
2002-12-06 20:55:53 +01:00
0
2003-02-10 16:59:16 +01:00
select NULL IN (SELECT * from t1);
NULL IN (SELECT * from t1)
2002-12-06 20:55:53 +01:00
NULL
2003-02-10 16:59:16 +01:00
update t1 set a=NULL where a=2;
select 1 IN (SELECT * from t1);
1 IN (SELECT * from t1)
2002-12-06 20:55:53 +01:00
1
2003-02-10 16:59:16 +01:00
select 3 IN (SELECT * from t1);
3 IN (SELECT * from t1)
2002-12-06 20:55:53 +01:00
1
2003-02-10 16:59:16 +01:00
select 10 IN (SELECT * from t1);
10 IN (SELECT * from t1)
2002-12-06 20:55:53 +01:00
NULL
2003-02-10 16:59:16 +01:00
select 1 > ALL (SELECT * from t1);
1 > ALL (SELECT * from t1)
2002-12-06 20:55:53 +01:00
0
2003-02-10 16:59:16 +01:00
select 10 > ALL (SELECT * from t1);
10 > ALL (SELECT * from t1)
2002-12-06 20:55:53 +01:00
NULL
2003-02-10 16:59:16 +01:00
select 1 > ANY (SELECT * from t1);
1 > ANY (SELECT * from t1)
2002-12-06 20:55:53 +01:00
NULL
2003-02-10 16:59:16 +01:00
select 10 > ANY (SELECT * from t1);
10 > ANY (SELECT * from t1)
2002-12-06 20:55:53 +01:00
1
2003-02-10 16:59:16 +01:00
drop table t1;
create table t1 (a varchar(20));
insert into t1 values ('A'),('BC'),('DEF');
select 'A' IN (SELECT * from t1);
'A' IN (SELECT * from t1)
2002-12-06 20:55:53 +01:00
1
2003-02-10 16:59:16 +01:00
select 'XYZS' IN (SELECT * from t1);
'XYZS' IN (SELECT * from t1)
2002-12-06 20:55:53 +01:00
0
2003-02-10 16:59:16 +01:00
select NULL IN (SELECT * from t1);
NULL IN (SELECT * from t1)
2002-12-06 20:55:53 +01:00
NULL
2003-02-10 16:59:16 +01:00
update t1 set a=NULL where a='BC';
select 'A' IN (SELECT * from t1);
'A' IN (SELECT * from t1)
2002-12-06 20:55:53 +01:00
1
2003-02-10 16:59:16 +01:00
select 'DEF' IN (SELECT * from t1);
'DEF' IN (SELECT * from t1)
2002-12-06 20:55:53 +01:00
1
2003-02-10 16:59:16 +01:00
select 'XYZS' IN (SELECT * from t1);
'XYZS' IN (SELECT * from t1)
2002-12-06 20:55:53 +01:00
NULL
2003-02-10 16:59:16 +01:00
select 'A' > ALL (SELECT * from t1);
'A' > ALL (SELECT * from t1)
2002-12-06 20:55:53 +01:00
0
2003-02-10 16:59:16 +01:00
select 'XYZS' > ALL (SELECT * from t1);
'XYZS' > ALL (SELECT * from t1)
2002-12-06 20:55:53 +01:00
NULL
2003-02-10 16:59:16 +01:00
select 'A' > ANY (SELECT * from t1);
'A' > ANY (SELECT * from t1)
2002-12-06 20:55:53 +01:00
NULL
2003-02-10 16:59:16 +01:00
select 'XYZS' > ANY (SELECT * from t1);
'XYZS' > ANY (SELECT * from t1)
2002-12-06 20:55:53 +01:00
1
2003-02-10 16:59:16 +01:00
drop table t1;
create table t1 (a float);
insert into t1 values (1.5),(2.5),(3.5);
select 1.5 IN (SELECT * from t1);
1.5 IN (SELECT * from t1)
2002-12-06 20:55:53 +01:00
1
2003-02-10 16:59:16 +01:00
select 10.5 IN (SELECT * from t1);
10.5 IN (SELECT * from t1)
2002-12-06 20:55:53 +01:00
0
2003-02-10 16:59:16 +01:00
select NULL IN (SELECT * from t1);
NULL IN (SELECT * from t1)
2002-12-06 20:55:53 +01:00
NULL
2003-02-10 16:59:16 +01:00
update t1 set a=NULL where a=2.5;
select 1.5 IN (SELECT * from t1);
1.5 IN (SELECT * from t1)
2002-12-06 20:55:53 +01:00
1
2003-02-10 16:59:16 +01:00
select 3.5 IN (SELECT * from t1);
3.5 IN (SELECT * from t1)
2002-12-06 20:55:53 +01:00
1
2003-02-10 16:59:16 +01:00
select 10.5 IN (SELECT * from t1);
10.5 IN (SELECT * from t1)
2002-12-06 20:55:53 +01:00
NULL
2003-02-10 16:59:16 +01:00
select 1.5 > ALL (SELECT * from t1);
1.5 > ALL (SELECT * from t1)
2002-12-06 20:55:53 +01:00
0
2003-02-10 16:59:16 +01:00
select 10.5 > ALL (SELECT * from t1);
10.5 > ALL (SELECT * from t1)
2002-12-06 20:55:53 +01:00
NULL
2003-02-10 16:59:16 +01:00
select 1.5 > ANY (SELECT * from t1);
1.5 > ANY (SELECT * from t1)
2002-12-06 20:55:53 +01:00
NULL
2003-02-10 16:59:16 +01:00
select 10.5 > ANY (SELECT * from t1);
10.5 > ANY (SELECT * from t1)
2002-12-06 20:55:53 +01:00
1
2003-02-10 16:59:16 +01:00
explain select (select a+1) from t1;
2002-12-26 00:28:59 +01:00
id select_type table type possible_keys key key_len ref rows Extra
2003-02-10 16:59:16 +01:00
1 PRIMARY t1 ALL NULL NULL NULL NULL 3
2002-12-26 00:28:59 +01:00
Warnings:
Note 1247 Select 2 was reduced during optimisation
2003-02-10 16:59:16 +01:00
select (select a+1) from t1;
2002-12-26 00:28:59 +01:00
(select a+1)
2.5
NULL
4.5
2003-02-10 16:59:16 +01:00
drop table t1;
CREATE TABLE t1 (a int(11) NOT NULL default '0', PRIMARY KEY (a));
CREATE TABLE t2 (a int(11) default '0', INDEX (a));
INSERT INTO t1 VALUES (1),(2),(3),(4);
INSERT INTO t2 VALUES (1),(2),(3);
SELECT t1.a, t1.a in (select t2.a from t2) FROM t1;
a t1.a in (select t2.a from t2)
1 1
2 1
3 1
4 0
explain SELECT t1.a, t1.a in (select t2.a from t2) FROM t1;
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t1 index NULL PRIMARY 4 NULL 4 Using index
2003-04-22 23:01:19 +02:00
2 DEPENDENT SUBQUERY t2 index a a 5 NULL 3 Using where; Using index
2003-02-10 16:59:16 +01:00
drop table t1,t2;
create table t1 (a float);
select 10.5 IN (SELECT * from t1 LIMIT 1);
2003-06-04 17:28:51 +02:00
ERROR 42000: This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
2003-02-10 16:59:16 +01:00
select 10.5 IN (SELECT * from t1 LIMIT 1 UNION SELECT 1.5);
2003-06-04 17:28:51 +02:00
ERROR 42000: This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
2003-02-10 16:59:16 +01:00
drop table t1;
2002-12-19 06:38:33 +01:00
create table t1 (a int, b int, c varchar(10));
create table t2 (a int);
insert into t1 values (1,2,'a'),(2,3,'b'),(3,4,'c');
insert into t2 values (1),(2),(NULL);
select a, (select a,b,c from t1 where t1.a=t2.a) = ROW(a,2,'a'),(select c from t1 where a=t2.a) from t2;
a (select a,b,c from t1 where t1.a=t2.a) = ROW(a,2,'a') (select c from t1 where a=t2.a)
1 1 a
2 0 b
NULL NULL NULL
select a, (select a,b,c from t1 where t1.a=t2.a) = ROW(a,3,'b'),(select c from t1 where a=t2.a) from t2;
a (select a,b,c from t1 where t1.a=t2.a) = ROW(a,3,'b') (select c from t1 where a=t2.a)
1 0 a
2 1 b
NULL NULL NULL
select a, (select a,b,c from t1 where t1.a=t2.a) = ROW(a,4,'c'),(select c from t1 where a=t2.a) from t2;
a (select a,b,c from t1 where t1.a=t2.a) = ROW(a,4,'c') (select c from t1 where a=t2.a)
1 0 a
2 0 b
NULL NULL NULL
drop table t1,t2;
2003-01-06 00:48:59 +01:00
create table t1 (a int, b real, c varchar(10));
insert into t1 values (1, 1, 'a'), (2,2,'b'), (NULL, 2, 'b');
select ROW(1, 1, 'a') IN (select a,b,c from t1);
ROW(1, 1, 'a') IN (select a,b,c from t1)
1
select ROW(1, 2, 'a') IN (select a,b,c from t1);
ROW(1, 2, 'a') IN (select a,b,c from t1)
2002-12-19 20:15:09 +01:00
NULL
2003-01-06 00:48:59 +01:00
select ROW(1, 1, 'a') IN (select b,a,c from t1);
ROW(1, 1, 'a') IN (select b,a,c from t1)
2002-12-19 20:15:09 +01:00
1
2003-01-06 00:48:59 +01:00
select ROW(1, 1, 'a') IN (select a,b,c from t1 where a is not null);
ROW(1, 1, 'a') IN (select a,b,c from t1 where a is not null)
2002-12-19 20:15:09 +01:00
1
2003-01-06 00:48:59 +01:00
select ROW(1, 2, 'a') IN (select a,b,c from t1 where a is not null);
ROW(1, 2, 'a') IN (select a,b,c from t1 where a is not null)
2002-12-19 20:15:09 +01:00
0
2003-01-06 00:48:59 +01:00
select ROW(1, 1, 'a') IN (select b,a,c from t1 where a is not null);
ROW(1, 1, 'a') IN (select b,a,c from t1 where a is not null)
2002-12-19 20:15:09 +01:00
1
2003-01-06 00:48:59 +01:00
select ROW(1, 1, 'a') IN (select a,b,c from t1 where c='b' or c='a');
ROW(1, 1, 'a') IN (select a,b,c from t1 where c='b' or c='a')
2002-12-19 20:15:09 +01:00
1
2003-01-06 00:48:59 +01:00
select ROW(1, 2, 'a') IN (select a,b,c from t1 where c='b' or c='a');
ROW(1, 2, 'a') IN (select a,b,c from t1 where c='b' or c='a')
2002-12-19 20:15:09 +01:00
NULL
2003-01-06 00:48:59 +01:00
select ROW(1, 1, 'a') IN (select b,a,c from t1 where c='b' or c='a');
ROW(1, 1, 'a') IN (select b,a,c from t1 where c='b' or c='a')
2002-12-19 20:15:09 +01:00
1
2003-01-06 00:48:59 +01:00
select ROW(1, 1, 'a') IN (select b,a,c from t1 limit 2);
2003-06-04 17:28:51 +02:00
ERROR 42000: This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
2003-01-06 00:48:59 +01:00
drop table t1;
create table t1 (a int);
insert into t1 values (1);
do @a:=(SELECT a from t1);
2003-01-03 16:08:00 +01:00
select @a;
@a
1
2003-01-04 15:33:42 +01:00
set @a:=2;
2003-01-06 01:46:36 +01:00
set @a:=(SELECT a from t1);
2003-01-04 15:33:42 +01:00
select @a;
@a
1
2003-01-06 00:48:59 +01:00
drop table t1;
do (SELECT a from t1);
2003-06-04 17:28:51 +02:00
ERROR 42S02: Table 'test.t1' doesn't exist
2003-01-06 10:44:18 +01:00
set @a:=(SELECT a from t1);
2003-06-04 17:28:51 +02:00
ERROR 42S02: Table 'test.t1' doesn't exist
2003-01-28 13:48:12 +01:00
CREATE TABLE t1 (a int, KEY(a));
HANDLER t1 OPEN;
HANDLER t1 READ a=((SELECT 1));
2003-06-04 17:28:51 +02:00
ERROR 42000: You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use
2003-01-28 13:48:12 +01:00
HANDLER t1 CLOSE;
drop table t1;
create table t1 (a int);
create table t2 (b int);
insert into t1 values (1),(2);
insert into t2 values (1);
select a from t1 where a in (select a from t1 where a in (select b from t2));
a
1
drop table t1, t2;
create table t1 (a int, b int);
create table t2 like t1;
insert into t1 values (1,2),(1,3),(1,4),(1,5);
insert into t2 values (1,2),(1,3);
select * from t1 where row(a,b) in (select a,b from t2);
a b
1 2
1 3
drop table t1, t2;
CREATE TABLE `t1` (`i` int(11) NOT NULL default '0',PRIMARY KEY (`i`)) TYPE=MyISAM CHARSET=latin1;
INSERT INTO t1 VALUES (1);
UPDATE t1 SET i=i+1 WHERE i=(SELECT MAX(i));
2003-06-04 17:28:51 +02:00
ERROR HY000: Invalid use of group function
2003-01-28 13:48:12 +01:00
drop table t1;
2003-02-10 16:59:16 +01:00
CREATE TABLE t1 (a int(1));
EXPLAIN SELECT (SELECT RAND() FROM t1) FROM t1;
2003-01-28 13:48:12 +01:00
id select_type table type possible_keys key key_len ref rows Extra
2003-02-10 16:59:16 +01:00
1 PRIMARY t1 system NULL NULL NULL NULL 0 const row not found
2003-04-04 13:33:01 +02:00
2 UNCACHEABLE SUBQUERY t1 system NULL NULL NULL NULL 0 const row not found
2003-02-10 16:59:16 +01:00
EXPLAIN SELECT (SELECT ENCRYPT('test') FROM t1) FROM t1;
2003-01-28 13:48:12 +01:00
id select_type table type possible_keys key key_len ref rows Extra
2003-02-10 16:59:16 +01:00
1 PRIMARY t1 system NULL NULL NULL NULL 0 const row not found
2003-04-04 13:33:01 +02:00
2 UNCACHEABLE SUBQUERY t1 system NULL NULL NULL NULL 0 const row not found
2003-02-10 16:59:16 +01:00
EXPLAIN SELECT (SELECT BENCHMARK(1,1) FROM t1) FROM t1;
2003-01-28 13:48:12 +01:00
id select_type table type possible_keys key key_len ref rows Extra
2003-02-10 16:59:16 +01:00
1 PRIMARY t1 system NULL NULL NULL NULL 0 const row not found
2003-04-04 13:33:01 +02:00
2 UNCACHEABLE SUBQUERY t1 system NULL NULL NULL NULL 0 const row not found
2003-02-10 16:59:16 +01:00
drop table t1;
2003-01-28 13:48:12 +01:00
CREATE TABLE `t1` (
`mot` varchar(30) character set latin1 NOT NULL default '',
`topic` mediumint(8) unsigned NOT NULL default '0',
`date` date NOT NULL default '0000-00-00',
`pseudo` varchar(35) character set latin1 NOT NULL default '',
PRIMARY KEY (`mot`,`pseudo`,`date`,`topic`),
KEY `pseudo` (`pseudo`,`date`,`topic`),
KEY `topic` (`topic`)
) TYPE=MyISAM CHARSET=latin1 ROW_FORMAT=DYNAMIC;
CREATE TABLE `t2` (
`mot` varchar(30) character set latin1 NOT NULL default '',
`topic` mediumint(8) unsigned NOT NULL default '0',
`date` date NOT NULL default '0000-00-00',
`pseudo` varchar(35) character set latin1 NOT NULL default '',
PRIMARY KEY (`mot`,`pseudo`,`date`,`topic`),
KEY `pseudo` (`pseudo`,`date`,`topic`),
KEY `topic` (`topic`)
) TYPE=MyISAM CHARSET=latin1 ROW_FORMAT=DYNAMIC;
CREATE TABLE `t3` (
`numeropost` mediumint(8) unsigned NOT NULL auto_increment,
`maxnumrep` int(10) unsigned NOT NULL default '0',
PRIMARY KEY (`numeropost`),
UNIQUE KEY `maxnumrep` (`maxnumrep`)
) TYPE=MyISAM CHARSET=latin1;
INSERT INTO t1 VALUES ('joce','1','','joce'),('test','2','','test');
2003-04-30 09:07:37 +02:00
Warnings:
Warning 1263 Data truncated for column 'date' at row 1
Warning 1263 Data truncated for column 'date' at row 2
2003-01-28 13:48:12 +01:00
INSERT INTO t2 VALUES ('joce','1','','joce'),('test','2','','test');
2003-04-30 09:07:37 +02:00
Warnings:
Warning 1263 Data truncated for column 'date' at row 1
Warning 1263 Data truncated for column 'date' at row 2
2003-01-28 13:48:12 +01:00
INSERT INTO t3 VALUES (1,1);
SELECT DISTINCT topic FROM t2 WHERE NOT EXISTS(SELECT * FROM t3 WHERE
numeropost=topic);
topic
2
select * from t1;
mot topic date pseudo
joce 1 0000-00-00 joce
test 2 0000-00-00 test
DELETE FROM t1 WHERE topic IN (SELECT DISTINCT topic FROM t2 WHERE NOT
EXISTS(SELECT * FROM t3 WHERE numeropost=topic));
select * from t1;
mot topic date pseudo
joce 1 0000-00-00 joce
drop table t1, t2, t3;
2003-01-29 18:42:39 +01:00
SELECT * FROM (SELECT 1 as a,(SELECT a)) a;
a (SELECT a)
1 1
CREATE TABLE t1 SELECT * FROM (SELECT 1 as a,(SELECT 1)) a;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` bigint(1) NOT NULL default '0',
`(SELECT 1)` bigint(1) NOT NULL default '0'
) TYPE=MyISAM CHARSET=latin1
drop table t1;
CREATE TABLE t1 SELECT * FROM (SELECT 1 as a,(SELECT a)) a;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` bigint(1) NOT NULL default '0',
`(SELECT a)` bigint(1) NOT NULL default '0'
) TYPE=MyISAM CHARSET=latin1
drop table t1;
CREATE TABLE t1 SELECT * FROM (SELECT 1 as a,(SELECT a+0)) a;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
`a` bigint(1) NOT NULL default '0',
`(SELECT a+0)` bigint(17) NOT NULL default '0'
) TYPE=MyISAM CHARSET=latin1
drop table t1;
CREATE TABLE t1 SELECT (SELECT 1 as a UNION SELECT 1+1 limit 1,1) as a;
SHOW CREATE TABLE t1;
Table Create Table
t1 CREATE TABLE `t1` (
2003-02-13 16:56:01 +01:00
`a` bigint(1) NOT NULL default '0'
2003-01-29 18:42:39 +01:00
) TYPE=MyISAM CHARSET=latin1
drop table t1;
2003-01-30 21:15:44 +01:00
create table t1 (a int);
insert into t1 values (1), (2), (3);
explain select a,(select (select rand() from t1 limit 1) from t1 limit 1)
from t1;
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t1 ALL NULL NULL NULL NULL 3
2003-04-04 13:33:01 +02:00
2 UNCACHEABLE SUBQUERY t1 ALL NULL NULL NULL NULL 3
3 UNCACHEABLE SUBQUERY t1 ALL NULL NULL NULL NULL 3
2003-01-30 21:15:44 +01:00
drop table t1;
2003-03-10 15:38:06 +01:00
select t1.Continent, t2.Name, t2.Population from t1 LEFT JOIN t2 ON t1.Code = t2.Country where t2.Population IN (select max(t2.Population) AS Population from t2, t1 where t2.Country = t1.Code group by Continent);
2003-06-04 17:28:51 +02:00
ERROR 42S02: Table 'test.t1' doesn't exist
2003-03-10 21:25:52 +01:00
CREATE TABLE t1 (
ID int(11) NOT NULL auto_increment,
name char(35) NOT NULL default '',
t2 char(3) NOT NULL default '',
District char(20) NOT NULL default '',
Population int(11) NOT NULL default '0',
PRIMARY KEY (ID)
) TYPE=MyISAM;
INSERT INTO t1 VALUES (130,'Sydney','AUS','New South Wales',3276207);
INSERT INTO t1 VALUES (131,'Melbourne','AUS','Victoria',2865329);
INSERT INTO t1 VALUES (132,'Brisbane','AUS','Queensland',1291117);
CREATE TABLE t2 (
Code char(3) NOT NULL default '',
Name char(52) NOT NULL default '',
Continent enum('Asia','Europe','North America','Africa','Oceania','Antarctica','South America') NOT NULL default 'Asia',
Region char(26) NOT NULL default '',
SurfaceArea float(10,2) NOT NULL default '0.00',
IndepYear smallint(6) default NULL,
Population int(11) NOT NULL default '0',
LifeExpectancy float(3,1) default NULL,
GNP float(10,2) default NULL,
GNPOld float(10,2) default NULL,
LocalName char(45) NOT NULL default '',
GovernmentForm char(45) NOT NULL default '',
HeadOfState char(60) default NULL,
Capital int(11) default NULL,
Code2 char(2) NOT NULL default '',
PRIMARY KEY (Code)
) TYPE=MyISAM;
INSERT INTO t2 VALUES ('AUS','Australia','Oceania','Australia and New Zealand',7741220.00,1901,18886000,79.8,351182.00,392911.00,'Australia','Constitutional Monarchy, Federation','Elisabeth II',135,'AU');
INSERT INTO t2 VALUES ('AZE','Azerbaijan','Asia','Middle East',86600.00,1991,7734000,62.9,4127.00,4100.00,'Az<41> rbaycan','Federal Republic','Heyd<79> r <20> liyev',144,'AZ');
select t2.Continent, t1.Name, t1.Population from t2 LEFT JOIN t1 ON t2.Code = t1.t2 where t1.Population IN (select max(t1.Population) AS Population from t1, t2 where t1.t2 = t2.Code group by Continent);
Continent Name Population
Oceania Sydney 3276207
drop table t1, t2;
2003-03-11 11:43:30 +01:00
CREATE TABLE `t1` (
`id` mediumint(8) unsigned NOT NULL auto_increment,
`pseudo` varchar(35) character set latin1 NOT NULL default '',
PRIMARY KEY (`id`),
UNIQUE KEY `pseudo` (`pseudo`),
) TYPE=MyISAM PACK_KEYS=1 ROW_FORMAT=DYNAMIC;
INSERT INTO t1 (pseudo) VALUES ('test');
SELECT 0 IN (SELECT 1 FROM t1 a);
0 IN (SELECT 1 FROM t1 a)
0
EXPLAIN SELECT 0 IN (SELECT 1 FROM t1 a);
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL No tables used
2003-04-22 23:01:19 +02:00
2 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
2003-03-11 11:43:30 +01:00
INSERT INTO t1 (pseudo) VALUES ('test1');
SELECT 0 IN (SELECT 1 FROM t1 a);
0 IN (SELECT 1 FROM t1 a)
0
EXPLAIN SELECT 0 IN (SELECT 1 FROM t1 a);
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY NULL NULL NULL NULL NULL NULL NULL No tables used
2003-04-22 23:01:19 +02:00
2 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE noticed after reading const tables
2003-03-11 11:43:30 +01:00
drop table t1;
2003-02-14 23:11:00 +01:00
CREATE TABLE `t1` (
`i` int(11) NOT NULL default '0',
PRIMARY KEY (`i`)
) TYPE=MyISAM CHARSET=latin1;
INSERT INTO t1 VALUES (1);
UPDATE t1 SET i=i+(SELECT MAX(i) FROM (SELECT 1) t) WHERE i=(SELECT MAX(i));
2003-06-04 17:28:51 +02:00
ERROR HY000: Invalid use of group function
2003-02-14 23:11:00 +01:00
UPDATE t1 SET i=i+1 WHERE i=(SELECT MAX(i));
2003-06-04 17:28:51 +02:00
ERROR HY000: Invalid use of group function
Give warning if MySQL doesn't honor given storage engine
Allow syntax CREATE TABLE t1 (LIKE t2)
BUILD/compile-pentium-debug-max:
Disable isam
BUILD/compile-pentium-valgrind-max:
Disable isam
include/mysqld_error.h:
New error
mysql-test/r/bdb.result:
new error message
mysql-test/r/innodb.result:
new error message
mysql-test/r/subselect.result:
New test
mysql-test/r/variables.result:
New test
mysql-test/r/warnings.result:
Test of warning if MySQL creates table with another handler than specified
mysql-test/t/innodb.test:
Added test case for derivied tables
mysql-test/t/subselect.test:
New test
mysql-test/t/variables-master.opt:
Fixed wrong parameter
mysql-test/t/warnings.test:
Test if creating handler of not existing table type
sql/ha_isam.cc:
Added option --skip-isam
sql/ha_isam.h:
Added option --skip-isam
sql/handler.cc:
Added option --skip-isam
sql/item.cc:
Deleted probably wrong bug fix
sql/mysqld.cc:
Added option --skip-isam
sql/share/czech/errmsg.txt:
Added missing ','
sql/share/danish/errmsg.txt:
Added missing ','
sql/share/dutch/errmsg.txt:
Added missing ','
sql/share/english/errmsg.txt:
Added missing ','
changed table handler -> storage engine
sql/share/estonian/errmsg.txt:
Added missing ','
sql/share/french/errmsg.txt:
Added missing ','
sql/share/german/errmsg.txt:
Added missing ','
sql/share/greek/errmsg.txt:
Added missing ','
sql/share/hungarian/errmsg.txt:
Added missing ','
sql/share/italian/errmsg.txt:
Added missing ','
sql/share/japanese/errmsg.txt:
Added missing ','
sql/share/korean/errmsg.txt:
Added missing ','
sql/share/norwegian-ny/errmsg.txt:
Added missing ','
sql/share/norwegian/errmsg.txt:
Added missing ','
sql/share/polish/errmsg.txt:
Added missing ','
sql/share/portuguese/errmsg.txt:
Added missing ','
sql/share/romanian/errmsg.txt:
Added missing ','
sql/share/russian/errmsg.txt:
Added missing ','
sql/share/serbian/errmsg.txt:
Added missing ','
sql/share/slovak/errmsg.txt:
Added missing ','
sql/share/spanish/errmsg.txt:
Added missing ','
sql/share/swedish/errmsg.txt:
Added missing ','
sql/share/ukrainian/errmsg.txt:
Added missing ','
sql/sql_acl.cc:
Fix bug in access checking of derived tables
sql/sql_base.cc:
Indentation change
sql/sql_parse.cc:
Fix bug in access checking of derived tables
sql/sql_select.cc:
Fixed bug in new sub select optimization
sql/sql_table.cc:
Give warning if MySQL doesn't honor given storage engine
sql/sql_yacc.yy:
Allow syntax CREATE TABLE t1 (LIKE t2).
2003-05-13 10:15:11 +02:00
UPDATE t1 SET t.i=i+(SELECT MAX(i) FROM (SELECT 1) t);
2003-06-04 17:28:51 +02:00
ERROR 42S02: Unknown table 't' in field list
2003-02-14 23:11:00 +01:00
drop table t1;
2003-04-05 08:29:28 +02:00
CREATE TABLE t1 (
id int(11) default NULL
) TYPE=MyISAM CHARSET=latin1;
INSERT INTO t1 VALUES (1),(1),(2),(2),(1),(3);
CREATE TABLE t2 (
id int(11) default NULL,
name varchar(15) default NULL
) TYPE=MyISAM CHARSET=latin1;
INSERT INTO t2 VALUES (4,'vita'), (1,'vita'), (2,'vita'), (1,'vita');
update t1, t2 set t2.name='lenka' where t2.id in (select id from t1);
select * from t2;
id name
4 vita
1 lenka
2 lenka
1 lenka
drop table t1,t2;
2003-04-22 23:01:19 +02:00
create table t1 (a int, unique index indexa (a));
insert into t1 values (-1), (-4), (-2), (NULL);
select -10 IN (select a from t1 FORCE INDEX (indexa));
-10 IN (select a from t1 FORCE INDEX (indexa))
NULL
drop table t1;
2003-05-06 00:38:38 +02:00
create table t1 (id int not null auto_increment primary key, salary int, key(salary));
insert into t1 (salary) values (100),(1000),(10000),(10),(500),(5000),(50000);
explain SELECT id FROM t1 where salary = (SELECT MAX(salary) FROM t1);
id select_type table type possible_keys key key_len ref rows Extra
1 PRIMARY t1 ref salary salary 5 const 1 Using where
2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
drop table t1;
2003-05-28 15:52:56 +02:00
CREATE TABLE t1 (
ID int(10) unsigned NOT NULL auto_increment,
SUB_ID int(3) unsigned NOT NULL default '0',
REF_ID int(10) unsigned default NULL,
REF_SUB int(3) unsigned default '0',
PRIMARY KEY (ID,SUB_ID),
UNIQUE KEY t1_PK (ID,SUB_ID),
KEY t1_FK (REF_ID,REF_SUB),
KEY t1_REFID (REF_ID)
) TYPE=MyISAM CHARSET=cp1251;
INSERT INTO t1 VALUES (1,0,NULL,NULL),(2,0,NULL,NULL);
SELECT DISTINCT REF_ID FROM t1 WHERE ID= (SELECT DISTINCT REF_ID FROM t1 WHERE ID=2);
REF_ID
DROP TABLE t1;
2003-05-19 14:32:38 +02:00
(SELECT 1 as a) UNION (SELECT 1) ORDER BY (SELECT a+0);
a
1
CREATE TABLE `t1` (
`id` mediumint(8) unsigned NOT NULL auto_increment,
`pseudo` varchar(35) NOT NULL default '',
`email` varchar(60) NOT NULL default '',
PRIMARY KEY (`id`),
UNIQUE KEY `email` (`email`),
UNIQUE KEY `pseudo` (`pseudo`),
) TYPE=MyISAM CHARSET=latin1 PACK_KEYS=1 ROW_FORMAT=DYNAMIC;
INSERT INTO t1 (id,pseudo,email) VALUES (1,'test','test'),(2,'test1','test1');
SELECT pseudo as a, pseudo as b FROM t1 GROUP BY (SELECT a) ORDER BY (SELECT id*1);
a b
test test
test1 test1
drop table if exists t1;