mirror of
https://github.com/MariaDB/server.git
synced 2025-07-30 16:24:05 +03:00
Merge
This commit is contained in:
@ -95,7 +95,17 @@ id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY <derived2> ALL NULL NULL NULL NULL 8
|
||||
2 DERIVED t1 ALL NULL NULL NULL NULL 4
|
||||
3 UNION t1 ALL NULL NULL NULL NULL 4
|
||||
drop table if exists t1;
|
||||
CREATE TABLE t2 (a int not null);
|
||||
insert into t2 values(1);
|
||||
select * from (select * from t1 where t1.a=(select a from t2 where t2.a=t1.a)) a;
|
||||
a b
|
||||
1 a
|
||||
select * from (select * from t1 where t1.a=(select t2.a from t2 where t2.a=t1.a) union select t1.a, t1.b from t1) a;
|
||||
a b
|
||||
1 a
|
||||
2 b
|
||||
3 c
|
||||
drop table t1, t2;
|
||||
create table t1(a int not null, t char(8), index(a));
|
||||
SELECT * FROM (SELECT * FROM t1) as b ORDER BY a ASC LIMIT 0,20;
|
||||
a t
|
||||
|
@ -155,21 +155,18 @@ select * from t2 where t2.b=(select a from t3 order by 1 desc limit 1);
|
||||
a b
|
||||
1 7
|
||||
2 7
|
||||
(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;
|
||||
(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;
|
||||
a b
|
||||
1 7
|
||||
2 7
|
||||
3 8
|
||||
(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);
|
||||
(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);
|
||||
a b
|
||||
1 7
|
||||
2 7
|
||||
3 8
|
||||
4 8
|
||||
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);
|
||||
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);
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where
|
||||
2 SUBSELECT t3 ALL NULL NULL NULL NULL 3 Using filesort
|
||||
@ -281,7 +278,7 @@ NULL 1
|
||||
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
|
||||
1 PRIMARY t2 ALL NULL NULL NULL NULL 2
|
||||
2 DEPENDENT SUBSELECT t1 system NULL NULL NULL NULL 1 Using where
|
||||
2 DEPENDENT SUBSELECT t1 system NULL NULL NULL NULL 1
|
||||
3 DEPENDENT UNION t5 ALL NULL NULL NULL NULL 2 Using where
|
||||
select (select a from t1 where t1.a=t2.a union all select a from t5 where t5.a=t2.a), a from t2;
|
||||
Subselect returns more than 1 record
|
||||
@ -324,9 +321,9 @@ 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');
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t8 const PRIMARY PRIMARY 35 const 1
|
||||
4 SUBSELECT t8 const PRIMARY PRIMARY 35 const 1
|
||||
4 SUBSELECT t8 const PRIMARY PRIMARY 35 1
|
||||
2 SUBSELECT t8 const PRIMARY PRIMARY 35 const 1
|
||||
3 SUBSELECT t8 const PRIMARY PRIMARY 35 const 1
|
||||
3 SUBSELECT t8 const PRIMARY PRIMARY 35 1
|
||||
SELECT pseudo FROM t8 WHERE pseudo=(SELECT pseudo,email FROM
|
||||
t8 WHERE pseudo='joce');
|
||||
Cardinality error (more/less than 1 columns)
|
||||
@ -400,36 +397,51 @@ SELECT (SELECT 1) as a FROM (SELECT 1 FROM t1 HAVING a=1) b;
|
||||
Unknown column 'a' in 'having clause'
|
||||
SELECT 1 IN (SELECT 1 FROM t2 HAVING a);
|
||||
Unknown column 'a' in 'having clause'
|
||||
SELECT * from t2 where topic IN (SELECT topic FROM t2 GROUP BY date);
|
||||
SELECT * from t2 where topic IN (SELECT topic FROM t2 GROUP BY topic);
|
||||
mot topic date pseudo
|
||||
joce 40143 2002-10-22 joce
|
||||
joce 43506 2002-10-22 joce
|
||||
SELECT * from t2 where topic IN (SELECT topic FROM t2 GROUP BY date HAVING topic < 4100);
|
||||
SELECT * from t2 where topic IN (SELECT topic FROM t2 GROUP BY topic HAVING topic < 4100);
|
||||
mot topic date pseudo
|
||||
joce 43506 2002-10-22 joce
|
||||
SELECT * from t2 where topic IN (SELECT SUM(topic) FROM t1);
|
||||
mot topic date pseudo
|
||||
SELECT * from t2 where topic = any (SELECT topic FROM t2 GROUP BY date);
|
||||
SELECT * from t2 where topic = any (SELECT topic FROM t2 GROUP BY topic);
|
||||
mot topic date pseudo
|
||||
joce 40143 2002-10-22 joce
|
||||
joce 43506 2002-10-22 joce
|
||||
SELECT * from t2 where topic = any (SELECT topic FROM t2 GROUP BY date HAVING topic < 4100);
|
||||
SELECT * from t2 where topic = any (SELECT topic FROM t2 GROUP BY topic HAVING topic < 4100);
|
||||
mot topic date pseudo
|
||||
joce 43506 2002-10-22 joce
|
||||
SELECT * from t2 where topic = any (SELECT SUM(topic) FROM t1);
|
||||
mot topic date pseudo
|
||||
SELECT * from t2 where topic = all (SELECT topic FROM t2 GROUP BY date);
|
||||
mot topic date pseudo
|
||||
joce 40143 2002-10-22 joce
|
||||
SELECT * from t2 where topic = all (SELECT topic FROM t2 GROUP BY date HAVING topic < 4100);
|
||||
SELECT * from t2 where topic = all (SELECT topic FROM t2 GROUP BY topic);
|
||||
mot topic date pseudo
|
||||
SELECT * from t2 where topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 4100);
|
||||
mot topic date pseudo
|
||||
joce 40143 2002-10-22 joce
|
||||
joce 43506 2002-10-22 joce
|
||||
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
|
||||
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
|
||||
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
|
||||
drop table t1,t2;
|
||||
CREATE TABLE `t1` (
|
||||
`numeropost` mediumint(8) unsigned NOT NULL auto_increment,
|
||||
@ -856,3 +868,86 @@ do (SELECT a from t1);
|
||||
Table 'test.t1' doesn't exist
|
||||
set @a:=(SELECT a from t1);
|
||||
Table 'test.t1' doesn't exist
|
||||
CREATE TABLE t1 (a int, KEY(a));
|
||||
HANDLER t1 OPEN;
|
||||
HANDLER t1 READ a=((SELECT 1));
|
||||
You have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use
|
||||
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));
|
||||
Invalid use of group function
|
||||
drop table t1;
|
||||
CREATE TABLE t (a int(1));
|
||||
EXPLAIN SELECT (SELECT RAND() FROM t) FROM t;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t system NULL NULL NULL NULL 0 const row not found
|
||||
2 UNCACHEABLE SUBSELECT t system NULL NULL NULL NULL 0 const row not found
|
||||
EXPLAIN SELECT (SELECT ENCRYPT('test') FROM t) FROM t;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t system NULL NULL NULL NULL 0 const row not found
|
||||
2 UNCACHEABLE SUBSELECT t system NULL NULL NULL NULL 0 const row not found
|
||||
EXPLAIN SELECT (SELECT BENCHMARK(1,1) FROM t) FROM t;
|
||||
id select_type table type possible_keys key key_len ref rows Extra
|
||||
1 PRIMARY t system NULL NULL NULL NULL 0 const row not found
|
||||
2 UNCACHEABLE SUBSELECT t system NULL NULL NULL NULL 0 const row not found
|
||||
drop table t;
|
||||
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');
|
||||
INSERT INTO t2 VALUES ('joce','1','','joce'),('test','2','','test');
|
||||
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;
|
||||
|
@ -37,7 +37,11 @@ select * from (select * from t1 union select * from t1) a;
|
||||
select * from (select * from t1 union all select * from t1) a;
|
||||
explain select * from (select * from t1 union select * from t1) a;
|
||||
explain select * from (select * from t1 union all select * from t1) a;
|
||||
drop table if exists t1;
|
||||
CREATE TABLE t2 (a int not null);
|
||||
insert into t2 values(1);
|
||||
select * from (select * from t1 where t1.a=(select a from t2 where t2.a=t1.a)) a;
|
||||
select * from (select * from t1 where t1.a=(select t2.a from t2 where t2.a=t1.a) union select t1.a, t1.b from t1) a;
|
||||
drop table t1, t2;
|
||||
create table t1(a int not null, t char(8), index(a));
|
||||
disable_query_log;
|
||||
let $1 = 10000;
|
||||
|
@ -70,12 +70,9 @@ select (select a from t3), a from t2;
|
||||
select * from t2 where t2.a=(select a from t1);
|
||||
insert into t3 values (6),(7),(3);
|
||||
select * from t2 where t2.b=(select a from t3 order by 1 desc limit 1);
|
||||
(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;
|
||||
(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);
|
||||
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);
|
||||
(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;
|
||||
(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);
|
||||
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);
|
||||
select (select a from t3 where a<t2.a*4 order by 1 desc limit 1), a from t2;
|
||||
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;
|
||||
@ -209,16 +206,22 @@ SELECT numeropost,maxnumrep FROM t1 WHERE exists (SELECT 1 FROM t2 WHERE (mot='j
|
||||
SELECT (SELECT 1) as a FROM (SELECT 1 FROM t1 HAVING a=1) b;
|
||||
-- error 1054
|
||||
SELECT 1 IN (SELECT 1 FROM t2 HAVING a);
|
||||
SELECT * from t2 where topic IN (SELECT topic FROM t2 GROUP BY date);
|
||||
SELECT * from t2 where topic IN (SELECT topic FROM t2 GROUP BY date HAVING topic < 4100);
|
||||
|
||||
SELECT * from t2 where topic IN (SELECT topic FROM t2 GROUP BY topic);
|
||||
SELECT * from t2 where topic IN (SELECT topic FROM t2 GROUP BY topic HAVING topic < 4100);
|
||||
SELECT * from t2 where topic IN (SELECT SUM(topic) FROM t1);
|
||||
SELECT * from t2 where topic = any (SELECT topic FROM t2 GROUP BY date);
|
||||
SELECT * from t2 where topic = any (SELECT topic FROM t2 GROUP BY date HAVING topic < 4100);
|
||||
SELECT * from t2 where topic = any (SELECT topic FROM t2 GROUP BY topic);
|
||||
SELECT * from t2 where topic = any (SELECT topic FROM t2 GROUP BY topic HAVING topic < 4100);
|
||||
SELECT * from t2 where topic = any (SELECT SUM(topic) FROM t1);
|
||||
SELECT * from t2 where topic = all (SELECT topic FROM t2 GROUP BY date);
|
||||
SELECT * from t2 where topic = all (SELECT topic FROM t2 GROUP BY date HAVING topic < 4100);
|
||||
SELECT * from t2 where topic = all (SELECT topic FROM t2 GROUP BY topic);
|
||||
SELECT * from t2 where topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 4100);
|
||||
SELECT *, topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 4100) from t2;
|
||||
SELECT * from t2 where topic = all (SELECT SUM(topic) FROM t2);
|
||||
SELECT * from t2 where topic <> any (SELECT SUM(topic) FROM t2);
|
||||
SELECT * from t2 where topic IN (SELECT topic FROM t2 GROUP BY topic HAVING topic < 41000);
|
||||
SELECT * from t2 where topic = any (SELECT topic FROM t2 GROUP BY topic HAVING topic < 41000);
|
||||
SELECT * from t2 where topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 41000);
|
||||
SELECT *, topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 41000) from t2;
|
||||
drop table t1,t2;
|
||||
|
||||
#forumconthardwarefr7
|
||||
@ -480,3 +483,79 @@ drop table t1;
|
||||
do (SELECT a from t1);
|
||||
-- error 1146
|
||||
set @a:=(SELECT a from t1);
|
||||
|
||||
CREATE TABLE t1 (a int, KEY(a));
|
||||
HANDLER t1 OPEN;
|
||||
-- error 1149
|
||||
HANDLER t1 READ a=((SELECT 1));
|
||||
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));
|
||||
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);
|
||||
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);
|
||||
-- error 1111
|
||||
UPDATE t1 SET i=i+1 WHERE i=(SELECT MAX(i));
|
||||
drop table t1;
|
||||
|
||||
#test of uncacheable subqueries
|
||||
CREATE TABLE t (a int(1));
|
||||
EXPLAIN SELECT (SELECT RAND() FROM t) FROM t;
|
||||
EXPLAIN SELECT (SELECT ENCRYPT('test') FROM t) FROM t;
|
||||
EXPLAIN SELECT (SELECT BENCHMARK(1,1) FROM t) FROM t;
|
||||
drop table t;
|
||||
|
||||
|
||||
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');
|
||||
|
||||
INSERT INTO t2 VALUES ('joce','1','','joce'),('test','2','','test');
|
||||
|
||||
INSERT INTO t3 VALUES (1,1);
|
||||
|
||||
SELECT DISTINCT topic FROM t2 WHERE NOT EXISTS(SELECT * FROM t3 WHERE
|
||||
numeropost=topic);
|
||||
select * from t1;
|
||||
DELETE FROM t1 WHERE topic IN (SELECT DISTINCT topic FROM t2 WHERE NOT
|
||||
EXISTS(SELECT * FROM t3 WHERE numeropost=topic));
|
||||
select * from t1;
|
||||
|
||||
drop table t1, t2, t3;
|
Reference in New Issue
Block a user