📄 subselect.result
字号:
Note 1276 Field or reference 't2.a' of SELECT #2 was resolved in SELECT #1Note 1276 Field or reference 't2.a' of SELECT #3 was resolved in SELECT #1Note 1003 select (select `test`.`t1`.`a` AS `a` from `test`.`t1` where (`test`.`t1`.`a` = `test`.`t2`.`a`) union select `test`.`t5`.`a` AS `a` from `test`.`t5` where (`test`.`t5`.`a` = `test`.`t2`.`a`)) AS `(select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a)`,`test`.`t2`.`a` AS `a` from `test`.`t2`select (select a from t1 where t1.a=t2.a union all select a from t5 where t5.a=t2.a), a from t2;ERROR 21000: Subquery returns more than 1 rowcreate 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);patient_uq clinic_uq1 11 22 2explain extended select * from t6 where exists (select * from t7 where uq = clinic_uq);id select_type table type possible_keys key key_len ref rows Extra1 PRIMARY t6 ALL NULL NULL NULL NULL 4 Using where2 DEPENDENT SUBQUERY t7 eq_ref PRIMARY PRIMARY 4 test.t6.clinic_uq 1 Using indexWarnings:Note 1276 Field or reference 'clinic_uq' of SELECT #2 was resolved in SELECT #1Note 1003 select `test`.`t6`.`patient_uq` AS `patient_uq`,`test`.`t6`.`clinic_uq` AS `clinic_uq` from `test`.`t6` where exists(select 1 AS `Not_used` from `test`.`t7` where (`test`.`t7`.`uq` = `test`.`t6`.`clinic_uq`))select * from t1 where a= (select a from t2,t4 where t2.b=t4.b);ERROR 23000: Column 'a' in field list is ambiguousdrop table 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 bW 1732-02-22SELECT * FROM t2 WHERE b = (SELECT MIN(b) FROM t2);a bW 1SELECT * FROM t3 WHERE b = (SELECT MIN(b) FROM t3);a bW aCREATE TABLE `t8` (`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`)) ENGINE=MyISAM CHARSET=latin1 ROW_FORMAT=DYNAMIC;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 EXTENDED 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 Extra1 PRIMARY t8 ref PRIMARY PRIMARY 37 const 1 Using where; Using index4 SUBQUERY t8 ref PRIMARY PRIMARY 37 1 Using where; Using index2 SUBQUERY t8 ref PRIMARY PRIMARY 37 const 1 Using where3 SUBQUERY t8 ref PRIMARY PRIMARY 37 1 Using where; Using indexWarnings:Note 1003 select `test`.`t8`.`pseudo` AS `pseudo`,(select `test`.`t8`.`email` AS `email` from `test`.`t8` where (`test`.`t8`.`pseudo` = (select `test`.`t8`.`pseudo` AS `pseudo` from `test`.`t8` where (`test`.`t8`.`pseudo` = _latin1'joce')))) AS `(SELECT email FROM t8 WHERE pseudo=(SELECT pseudo FROM t8 WHERE pseudo='joce'))` from `test`.`t8` where (`test`.`t8`.`pseudo` = (select `test`.`t8`.`pseudo` AS `pseudo` from `test`.`t8` where (`test`.`t8`.`pseudo` = _latin1'joce')))SELECT pseudo FROM t8 WHERE pseudo=(SELECT pseudo,email FROMt8 WHERE pseudo='joce');ERROR 21000: Operand should contain 1 column(s)SELECT pseudo FROM t8 WHERE pseudo=(SELECT * FROM t8 WHEREpseudo='joce');ERROR 21000: Operand should contain 1 column(s)SELECT pseudo FROM t8 WHERE pseudo=(SELECT pseudo FROM t8 WHERE pseudo='joce');pseudojoceSELECT pseudo FROM t8 WHERE pseudo=(SELECT pseudo FROM t8 WHERE pseudo LIKE '%joce%');ERROR 21000: Subquery returns more than 1 rowdrop table if exists t1,t2,t3,t4,t5,t6,t7,t8;CREATE TABLE `t1` (`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`)) ENGINE=MyISAM ROW_FORMAT=DYNAMIC;INSERT INTO t1 (topic,date,pseudo) VALUES('43506','2002-10-02','joce'),('40143','2002-08-03','joce');EXPLAIN EXTENDED SELECT DISTINCT date FROM t1 WHERE date='2002-08-03';id select_type table type possible_keys key key_len ref rows Extra1 SIMPLE t1 index NULL PRIMARY 43 NULL 2 Using where; Using indexWarnings:Note 1003 select distinct `test`.`t1`.`date` AS `date` from `test`.`t1` where (`test`.`t1`.`date` = 20020803)EXPLAIN EXTENDED SELECT (SELECT DISTINCT date FROM t1 WHERE date='2002-08-03');id select_type table type possible_keys key key_len ref rows Extra1 PRIMARY NULL NULL NULL NULL NULL NULL NULL No tables used2 SUBQUERY t1 index NULL PRIMARY 43 NULL 2 Using where; Using indexWarnings:Note 1003 select (select distinct `test`.`t1`.`date` AS `date` from `test`.`t1` where (`test`.`t1`.`date` = 20020803)) AS `(SELECT DISTINCT date FROM t1 WHERE date='2002-08-03')`SELECT DISTINCT date FROM t1 WHERE date='2002-08-03';date2002-08-03SELECT (SELECT DISTINCT date FROM t1 WHERE date='2002-08-03');(SELECT DISTINCT date FROM t1 WHERE date='2002-08-03')2002-08-03SELECT 1 FROM t1 WHERE 1=(SELECT 1 UNION SELECT 1) UNION ALL SELECT 1;1111SELECT 1 FROM t1 WHERE 1=(SELECT 1 UNION ALL SELECT 1) UNION SELECT 1;ERROR 21000: Subquery returns more than 1 rowEXPLAIN EXTENDED SELECT 1 FROM t1 WHERE 1=(SELECT 1 UNION SELECT 1);id select_type table type possible_keys key key_len ref rows Extra1 PRIMARY t1 index NULL topic 3 NULL 2 Using index2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL No tables used3 UNION NULL NULL NULL NULL NULL NULL NULL No tables usedNULL UNION RESULT <union2,3> ALL NULL NULL NULL NULL NULL Warnings:Note 1003 select 1 AS `1` from `test`.`t1`drop table t1;CREATE TABLE `t1` (`numeropost` mediumint(8) unsigned NOT NULL auto_increment,`maxnumrep` int(10) unsigned NOT NULL default '0',PRIMARY KEY (`numeropost`),UNIQUE KEY `maxnumrep` (`maxnumrep`)) ENGINE=MyISAM ROW_FORMAT=FIXED;INSERT INTO t1 (numeropost,maxnumrep) VALUES (40143,1),(43506,2);CREATE TABLE `t2` (`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`)) ENGINE=MyISAM ROW_FORMAT=DYNAMIC;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);a40143SELECT 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;numeropost maxnumrep43506 240143 1SELECT (SELECT 1) as a FROM (SELECT 1 FROM t1 HAVING a=1) b;ERROR 42S22: Unknown column 'a' in 'having clause'SELECT 1 IN (SELECT 1 FROM t2 HAVING a);ERROR 42S22: Unknown column 'a' in 'having clause'SELECT * from t2 where topic IN (SELECT topic FROM t2 GROUP BY topic);mot topic date pseudojoce 40143 2002-10-22 jocejoce 43506 2002-10-22 joceSELECT * from t2 where topic IN (SELECT topic FROM t2 GROUP BY topic HAVING topic < 4100);mot topic date pseudoSELECT * from t2 where topic IN (SELECT SUM(topic) FROM t1);mot topic date pseudoSELECT * from t2 where topic = any (SELECT topic FROM t2 GROUP BY topic);mot topic date pseudojoce 40143 2002-10-22 jocejoce 43506 2002-10-22 joceSELECT * from t2 where topic = any (SELECT topic FROM t2 GROUP BY topic HAVING topic < 4100);mot topic date pseudoSELECT * from t2 where topic = any (SELECT SUM(topic) FROM t1);mot topic date pseudoSELECT * from t2 where topic = all (SELECT topic FROM t2 GROUP BY topic);mot topic date pseudoSELECT * from t2 where topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 4100);mot topic date pseudojoce 40143 2002-10-22 jocejoce 43506 2002-10-22 joceSELECT *, 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 1joce 43506 2002-10-22 joce 1SELECT * from t2 where topic = all (SELECT SUM(topic) FROM t2);mot topic date pseudoSELECT * from t2 where topic <> any (SELECT SUM(topic) FROM t2);mot topic date pseudojoce 40143 2002-10-22 jocejoce 43506 2002-10-22 joceSELECT * from t2 where topic IN (SELECT topic FROM t2 GROUP BY topic HAVING topic < 41000);mot topic date pseudojoce 40143 2002-10-22 joceSELECT * from t2 where topic = any (SELECT topic FROM t2 GROUP BY topic HAVING topic < 41000);mot topic date pseudojoce 40143 2002-10-22 joceSELECT * from t2 where topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 41000);mot topic date pseudojoce 40143 2002-10-22 joceSELECT *, 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 1joce 43506 2002-10-22 joce 0drop table t1,t2;CREATE TABLE `t1` (`numeropost` mediumint(8) unsigned NOT NULL auto_increment,`maxnumrep` int(10) unsigned NOT NULL default '0',PRIMARY KEY (`numeropost`),UNIQUE KEY `maxnumrep` (`maxnumrep`)) ENGINE=MyISAM ROW_FORMAT=FIXED;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);ERROR 21000: Subquery returns more than 1 rowselect numeropost as a FROM t1 ORDER BY (SELECT 1 FROM t1 HAVING a=1);ERROR 21000: Subquery returns more than 1 rowdrop table t1;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);a123drop table t1;CREATE TABLE t1 (field char(1) NOT NULL DEFAULT 'b');INSERT INTO t1 VALUES ();SELECT field FROM t1 WHERE 1=(SELECT 1 UNION ALL SELECT 1 FROM (SELECT 1) a HAVING field='b');ERROR 21000: Subquery returns more than 1 rowdrop table t1;CREATE TABLE `t1` (`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`)) ENGINE=MyISAM;SELECT (SELECT numeropost FROM t1 HAVING numreponse=a),numreponse FROM (SELECT * FROM t1) as a;ERROR 42S22: Reference 'numreponse' not supported (forward reference in item list)SELECT numreponse, (SELECT numeropost FROM t1 HAVING numreponse=a) FROM (SELECT * FROM t1) as a;ERROR 42S22: Unknown column 'a' in 'having clause'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 EXTENDED SELECT numreponse FROM t1 WHERE numeropost='1' AND numreponse=(SELECT 1 FROM t1 WHERE numeropost='1');ERROR 21000: Subquery returns more than 1 rowEXPLAIN EXTENDED SELECT MAX(numreponse) FROM t1 WHERE numeropost='1';id select_type table type possible_keys key key_len ref rows Extra1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Select tables optimized awayWarnings:Note 1003 select max(`test`.`t1`.`numreponse`) AS `MAX(numreponse)` from `test`.`t1` where (`test`.`t1`.`numeropost` = _latin1'1')EXPLAIN EXTENDED SELECT numreponse FROM t1 WHERE numeropost='1' AND numreponse=(SELECT MAX(numreponse) FROM t1 WHERE numeropost='1');id select_type table type possible_keys key key_len ref rows Extra1 PRIMARY t1 const PRIMARY,numreponse PRIMARY 7 const,const 1 Using index2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL Select tables optimized awayWarnings:Note 1003 select `test`.`t1`.`numreponse` AS `numreponse` from `test`.`t1` where ((`test`.`t1`.`numreponse` = (select max(`test`.`t1`.`numreponse`) AS `MAX(numreponse)` from `test`.`t1` where (`test`.`t1`.`numeropost` = _latin1'1'))) and (`test`.`t1`.`numeropost` = _latin1'1'))drop table t1;CREATE TABLE t1 (a int(1));INSERT INTO t1 VALUES (1);SELECT 1 FROM (SELECT a FROM t1) b HAVING (SELECT b.a)=1;11drop table t1;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 b0 101 112 12update t1 set b= (select b from t1);ERROR HY000: You can't specify target table 't1' for update in FROM clauseupdate t1 set b= (select b from t2);ERROR 21000: Subquery returns more than 1 rowupdate t1 set b= (select b from t2 where t1.a = t2.a);select * from t1;a b0 NULL1 212 22drop table t1, t2;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 b0 101 112 12select * from t1 where b = (select b from t2 where t1.a = t2.a);a b2 12delete from t1 where b = (select b from t1);ERROR HY000: You can't specify target table 't1' for update in FROM clausedelete from t1 where b = (select b from t2);ERROR 21000: Subquery returns more than 1 rowdelete from t1 where b = (select b from t2 where t1.a = t2.a);select * from t1;a b0 101 11drop table t1, t2;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 b0 101 112 12select * from t12;a b33 1022 112 12delete t11.*, t12.* from t11,t12 where t11.a = t12.a and t11.b = (select b from t12 where t11.a = t12.a);ERROR HY000: You can't specify target table 't12' for update in FROM clausedelete t11.*, t12.* from t11,t12 where t11.a = t12.a and t11.b = (select b from t2);ERROR 21000: Subquery returns more than 1 rowdelete 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 b0 101 11select * from t12;a b33 1022 11drop table t11, t12, t2;CREATE TABLE t1 (x int);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -