subselect.result
上传用户:romrleung
上传日期:2022-05-23
资源大小:18897k
文件大小:108k
源码类别:

MySQL数据库

开发平台:

Visual C++

  1. drop table if exists t1,t2,t3,t4,t5,t6,t7,t8,t11,t12;
  2. select (select 2);
  3. (select 2)
  4. 2
  5. explain extended select (select 2);
  6. id select_type table type possible_keys key key_len ref rows Extra
  7. 1 PRIMARY NULL NULL NULL NULL NULL NULL NULL No tables used
  8. Warnings:
  9. Note 1249 Select 2 was reduced during optimization
  10. Note 1003 select 2 AS `(select 2)`
  11. SELECT (SELECT 1) UNION SELECT (SELECT 2);
  12. (SELECT 1)
  13. 1
  14. 2
  15. explain extended SELECT (SELECT 1) UNION SELECT (SELECT 2);
  16. id select_type table type possible_keys key key_len ref rows Extra
  17. 1 PRIMARY NULL NULL NULL NULL NULL NULL NULL No tables used
  18. 3 UNION NULL NULL NULL NULL NULL NULL NULL No tables used
  19. NULL UNION RESULT <union1,3> ALL NULL NULL NULL NULL NULL
  20. Warnings:
  21. Note 1249 Select 2 was reduced during optimization
  22. Note 1249 Select 4 was reduced during optimization
  23. Note 1003 select 1 AS `(SELECT 1)` union select 2 AS `(SELECT 2)`
  24. SELECT (SELECT (SELECT 0 UNION SELECT 0));
  25. (SELECT (SELECT 0 UNION SELECT 0))
  26. 0
  27. explain extended SELECT (SELECT (SELECT 0 UNION SELECT 0));
  28. id select_type table type possible_keys key key_len ref rows Extra
  29. 1 PRIMARY NULL NULL NULL NULL NULL NULL NULL No tables used
  30. 3 SUBQUERY NULL NULL NULL NULL NULL NULL NULL No tables used
  31. 4 UNION NULL NULL NULL NULL NULL NULL NULL No tables used
  32. NULL UNION RESULT <union3,4> ALL NULL NULL NULL NULL NULL
  33. Warnings:
  34. Note 1249 Select 2 was reduced during optimization
  35. Note 1003 select (select 0 AS `0` union select 0 AS `0`) AS `(SELECT (SELECT 0 UNION SELECT 0))`
  36. SELECT (SELECT 1 FROM (SELECT 1) as b HAVING a=1) as a;
  37. ERROR 42S22: Reference 'a' not supported (forward reference in item list)
  38. 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;
  39. ERROR 42S22: Reference 'b' not supported (forward reference in item list)
  40. SELECT (SELECT 1),MAX(1) FROM (SELECT 1) as a;
  41. (SELECT 1) MAX(1)
  42. 1 1
  43. SELECT (SELECT a) as a;
  44. ERROR 42S22: Reference 'a' not supported (forward reference in item list)
  45. EXPLAIN EXTENDED SELECT 1 FROM (SELECT 1 as a) as b  HAVING (SELECT a)=1;
  46. id select_type table type possible_keys key key_len ref rows Extra
  47. 1 PRIMARY <derived2> system NULL NULL NULL NULL 1
  48. 3 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL No tables used
  49. 2 DERIVED NULL NULL NULL NULL NULL NULL NULL No tables used
  50. Warnings:
  51. Note 1276 Field or reference 'a' of SELECT #3 was resolved in SELECT #1
  52. Note 1276 Field or reference 'b.a' of SELECT #3 was resolved in SELECT #1
  53. Note 1003 select 1 AS `1` from (select 1 AS `a`) b having ((select b.a AS `a`) = 1)
  54. SELECT 1 FROM (SELECT 1 as a) as b HAVING (SELECT a)=1;
  55. 1
  56. 1
  57. SELECT (SELECT 1), a;
  58. ERROR 42S22: Unknown column 'a' in 'field list'
  59. SELECT 1 as a FROM (SELECT 1) as b HAVING (SELECT a)=1;
  60. a
  61. 1
  62. SELECT 1 FROM (SELECT (SELECT a) b) c;
  63. ERROR 42S22: Unknown column 'a' in 'field list'
  64. SELECT * FROM (SELECT 1 as id) b WHERE id IN (SELECT * FROM (SELECT 1 as id) c ORDER BY id);
  65. id
  66. 1
  67. SELECT * FROM (SELECT 1) a  WHERE 1 IN (SELECT 1,1);
  68. ERROR 21000: Operand should contain 1 column(s)
  69. SELECT 1 IN (SELECT 1);
  70. 1 IN (SELECT 1)
  71. 1
  72. SELECT 1 FROM (SELECT 1 as a) b WHERE 1 IN (SELECT (SELECT a));
  73. 1
  74. 1
  75. select (SELECT 1 FROM (SELECT 1) a PROCEDURE ANALYSE(1));
  76. ERROR HY000: Incorrect usage of PROCEDURE and subquery
  77. SELECT 1 FROM (SELECT 1) a PROCEDURE ANALYSE((SELECT 1));
  78. ERROR HY000: Incorrect parameters to procedure 'ANALYSE'
  79. SELECT (SELECT 1) as a FROM (SELECT 1) b WHERE (SELECT a) IS NULL;
  80. a
  81. SELECT (SELECT 1) as a FROM (SELECT 1) b WHERE (SELECT a) IS NOT NULL;
  82. a
  83. 1
  84. SELECT (SELECT 1,2,3) = ROW(1,2,3);
  85. (SELECT 1,2,3) = ROW(1,2,3)
  86. 1
  87. SELECT (SELECT 1,2,3) = ROW(1,2,1);
  88. (SELECT 1,2,3) = ROW(1,2,1)
  89. 0
  90. SELECT (SELECT 1,2,3) < ROW(1,2,1);
  91. (SELECT 1,2,3) < ROW(1,2,1)
  92. 0
  93. SELECT (SELECT 1,2,3) > ROW(1,2,1);
  94. (SELECT 1,2,3) > ROW(1,2,1)
  95. 1
  96. SELECT (SELECT 1,2,3) = ROW(1,2,NULL);
  97. (SELECT 1,2,3) = ROW(1,2,NULL)
  98. NULL
  99. SELECT ROW(1,2,3) = (SELECT 1,2,3);
  100. ROW(1,2,3) = (SELECT 1,2,3)
  101. 1
  102. SELECT ROW(1,2,3) = (SELECT 1,2,1);
  103. ROW(1,2,3) = (SELECT 1,2,1)
  104. 0
  105. SELECT ROW(1,2,3) < (SELECT 1,2,1);
  106. ROW(1,2,3) < (SELECT 1,2,1)
  107. 0
  108. SELECT ROW(1,2,3) > (SELECT 1,2,1);
  109. ROW(1,2,3) > (SELECT 1,2,1)
  110. 1
  111. SELECT ROW(1,2,3) = (SELECT 1,2,NULL);
  112. ROW(1,2,3) = (SELECT 1,2,NULL)
  113. NULL
  114. SELECT (SELECT 1.5,2,'a') = ROW(1.5,2,'a');
  115. (SELECT 1.5,2,'a') = ROW(1.5,2,'a')
  116. 1
  117. SELECT (SELECT 1.5,2,'a') = ROW(1.5,2,'b');
  118. (SELECT 1.5,2,'a') = ROW(1.5,2,'b')
  119. 0
  120. SELECT (SELECT 1.5,2,'a') = ROW('b',2,'b');
  121. (SELECT 1.5,2,'a') = ROW('b',2,'b')
  122. 0
  123. SELECT (SELECT 'b',2,'a') = ROW(1.5,2,'a');
  124. (SELECT 'b',2,'a') = ROW(1.5,2,'a')
  125. 0
  126. SELECT (SELECT 1.5,2,'a') = ROW(1.5,'c','a');
  127. (SELECT 1.5,2,'a') = ROW(1.5,'c','a')
  128. 0
  129. SELECT (SELECT 1.5,'c','a') = ROW(1.5,2,'a');
  130. (SELECT 1.5,'c','a') = ROW(1.5,2,'a')
  131. 0
  132. SELECT (SELECT * FROM (SELECT 'test' a,'test' b) a);
  133. ERROR 21000: Operand should contain 1 column(s)
  134. SELECT 1 as a,(SELECT a+a) b,(SELECT b);
  135. a b (SELECT b)
  136. 1 2 2
  137. create table t1 (a int);
  138. create table t2 (a int, b int);
  139. create table t3 (a int);
  140. create table t4 (a int not null, b int not null);
  141. insert into t1 values (2);
  142. insert into t2 values (1,7),(2,7);
  143. insert into t4 values (4,8),(3,8),(5,9);
  144. select (select a from t1 where t1.a = a1) as a2, (select b from t2 where t2.b=a2) as a1;
  145. ERROR 42S22: Reference 'a1' not supported (forward reference in item list)
  146. select (select a from t1 where t1.a=t2.a), a from t2;
  147. (select a from t1 where t1.a=t2.a) a
  148. NULL 1
  149. 2 2
  150. select (select a from t1 where t1.a=t2.b), a from t2;
  151. (select a from t1 where t1.a=t2.b) a
  152. NULL 1
  153. NULL 2
  154. select (select a from t1), a, (select 1 union select 2 limit 1) from t2;
  155. (select a from t1) a (select 1 union select 2 limit 1)
  156. 2 1 1
  157. 2 2 1
  158. select (select a from t3), a from t2;
  159. (select a from t3) a
  160. NULL 1
  161. NULL 2
  162. select * from t2 where t2.a=(select a from t1);
  163. a b
  164. 2 7
  165. insert into t3 values (6),(7),(3);
  166. select * from t2 where t2.b=(select a from t3 order by 1 desc limit 1);
  167. a b
  168. 1 7
  169. 2 7
  170. (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;
  171. a b
  172. 1 7
  173. 2 7
  174. 3 8
  175. (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);
  176. a b
  177. 1 7
  178. 2 7
  179. 4 8
  180. 3 8
  181. explain extended (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);
  182. id select_type table type possible_keys key key_len ref rows Extra
  183. 1 PRIMARY t2 ALL NULL NULL NULL NULL 2 Using where
  184. 2 SUBQUERY t3 ALL NULL NULL NULL NULL 3 Using filesort
  185. 3 UNION t4 ALL NULL NULL NULL NULL 3 Using where
  186. 4 SUBQUERY t2 ALL NULL NULL NULL NULL 2
  187. NULL UNION RESULT <union1,3> ALL NULL NULL NULL NULL NULL
  188. Warnings:
  189. Note 1003 (select test.t2.a AS `a`,test.t2.b AS `b` from test.t2 where (test.t2.b = (select test.t3.a AS `a` from test.t3 order by test.t3.a desc limit 1))) union (select test.t4.a AS `a`,test.t4.b AS `b` from test.t4 where (test.t4.b = (select (max(test.t2.a) * 4) AS `max(t2.a)*4` from test.t2)) order by a)
  190. select (select a from t3 where a<t2.a*4 order by 1 desc limit 1), a from t2;
  191. (select a from t3 where a<t2.a*4 order by 1 desc limit 1) a
  192. 3 1
  193. 7 2
  194. select (select t3.a from t3 where a<8 order by 1 desc limit 1), a from 
  195. (select * from t2 where a>1) as tt;
  196. (select t3.a from t3 where a<8 order by 1 desc limit 1) a
  197. 7 2
  198. explain extended select (select t3.a from t3 where a<8 order by 1 desc limit 1), a from 
  199. (select * from t2 where a>1) as tt;
  200. id select_type table type possible_keys key key_len ref rows Extra
  201. 1 PRIMARY <derived3> system NULL NULL NULL NULL 1
  202. 3 DERIVED t2 ALL NULL NULL NULL NULL 2 Using where
  203. 2 SUBQUERY t3 ALL NULL NULL NULL NULL 3 Using where; Using filesort
  204. Warnings:
  205. Note 1003 select (select test.t3.a AS `a` from test.t3 where (test.t3.a < 8) order by test.t3.a desc limit 1) AS `(select t3.a from t3 where a<8 order by 1 desc limit 1)`,tt.a AS `a` from (select test.t2.a AS `a`,test.t2.b AS `b` from test.t2 where (test.t2.a > 1)) tt
  206. 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);
  207. a
  208. 2
  209. 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);
  210. a
  211. 2
  212. 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);
  213. a
  214. select b,(select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2) from t4;
  215. b (select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2)
  216. 8 7.5000
  217. 8 4.5000
  218. 9 7.5000
  219. explain extended select b,(select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2) from t4;
  220. id select_type table type possible_keys key key_len ref rows Extra
  221. 1 PRIMARY t4 ALL NULL NULL NULL NULL 3
  222. 2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 2
  223. 3 DEPENDENT SUBQUERY t3 ALL NULL NULL NULL NULL 3 Using where
  224. Warnings:
  225. Note 1276 Field or reference 't4.a' of SELECT #3 was resolved in SELECT #1
  226. Note 1003 select test.t4.b AS `b`,(select avg((test.t2.a + (select min(test.t3.a) AS `min(t3.a)` from test.t3 where (test.t3.a >= test.t4.a)))) AS `avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a))` from test.t2) AS `(select avg(t2.a+(select min(t3.a) from t3 where t3.a >= t4.a)) from t2)` from test.t4
  227. select * from t3 where exists (select * from t2 where t2.b=t3.a);
  228. a
  229. 7
  230. select * from t3 where not exists (select * from t2 where t2.b=t3.a);
  231. a
  232. 6
  233. 3
  234. select * from t3 where a in (select b from t2);
  235. a
  236. 7
  237. select * from t3 where a not in (select b from t2);
  238. a
  239. 6
  240. 3
  241. select * from t3 where a = some (select b from t2);
  242. a
  243. 7
  244. select * from t3 where a <> any (select b from t2);
  245. a
  246. 6
  247. 3
  248. select * from t3 where a = all (select b from t2);
  249. a
  250. 7
  251. select * from t3 where a <> all (select b from t2);
  252. a
  253. 6
  254. 3
  255. insert into t2 values (100, 5);
  256. select * from t3 where a < any (select b from t2);
  257. a
  258. 6
  259. 3
  260. select * from t3 where a < all (select b from t2);
  261. a
  262. 3
  263. select * from t3 where a >= any (select b from t2);
  264. a
  265. 6
  266. 7
  267. explain extended select * from t3 where a >= any (select b from t2);
  268. id select_type table type possible_keys key key_len ref rows Extra
  269. 1 PRIMARY t3 ALL NULL NULL NULL NULL 3 Using where
  270. 2 SUBQUERY t2 ALL NULL NULL NULL NULL 3
  271. Warnings:
  272. Note 1003 select test.t3.a AS `a` from test.t3 where <nop>((test.t3.a >= (select min(test.t2.b) from test.t2)))
  273. select * from t3 where a >= all (select b from t2);
  274. a
  275. 7
  276. delete from t2 where a=100;
  277. select * from t3 where a in (select a,b from t2);
  278. ERROR 21000: Operand should contain 1 column(s)
  279. select * from t3 where a in (select * from t2);
  280. ERROR 21000: Operand should contain 1 column(s)
  281. insert into t4 values (12,7),(1,7),(10,9),(9,6),(7,6),(3,9),(1,10);
  282. select b,max(a) as ma from t4 group by b having b < (select max(t2.a) from t2 where t2.b=t4.b);
  283. b ma
  284. insert into t2 values (2,10);
  285. select b,max(a) as ma from t4 group by b having ma < (select max(t2.a) from t2 where t2.b=t4.b);
  286. b ma
  287. 10 1
  288. delete from t2 where a=2 and b=10;
  289. select b,max(a) as ma from t4 group by b having b >= (select max(t2.a) from t2 where t2.b=t4.b);
  290. b ma
  291. 7 12
  292. create table t5 (a int);
  293. select (select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a), a from t2;
  294. (select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a) a
  295. NULL 1
  296. 2 2
  297. insert into t5 values (5);
  298. select (select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a), a from t2;
  299. (select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a) a
  300. NULL 1
  301. 2 2
  302. insert into t5 values (2);
  303. select (select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a), a from t2;
  304. (select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a) a
  305. NULL 1
  306. 2 2
  307. explain extended select (select a from t1 where t1.a=t2.a union select a from t5 where t5.a=t2.a), a from t2;
  308. id select_type table type possible_keys key key_len ref rows Extra
  309. 1 PRIMARY t2 ALL NULL NULL NULL NULL 2
  310. 2 DEPENDENT SUBQUERY t1 system NULL NULL NULL NULL 1
  311. 3 DEPENDENT UNION t5 ALL NULL NULL NULL NULL 2 Using where
  312. NULL UNION RESULT <union2,3> ALL NULL NULL NULL NULL NULL
  313. Warnings:
  314. Note 1276 Field or reference 't2.a' of SELECT #2 was resolved in SELECT #1
  315. Note 1276 Field or reference 't2.a' of SELECT #3 was resolved in SELECT #1
  316. Note 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
  317. select (select a from t1 where t1.a=t2.a union all select a from t5 where t5.a=t2.a), a from t2;
  318. ERROR 21000: Subquery returns more than 1 row
  319. create table t6 (patient_uq int, clinic_uq int, index i1 (clinic_uq));
  320. create table t7( uq int primary key, name char(25));
  321. insert into t7 values(1,"Oblastnaia bolnitsa"),(2,"Bolnitsa Krasnogo Kresta");
  322. insert into t6 values (1,1),(1,2),(2,2),(1,3);
  323. select * from t6 where exists (select * from t7 where uq = clinic_uq);
  324. patient_uq clinic_uq
  325. 1 1
  326. 1 2
  327. 2 2
  328. explain extended select * from t6 where exists (select * from t7 where uq = clinic_uq);
  329. id select_type table type possible_keys key key_len ref rows Extra
  330. 1 PRIMARY t6 ALL NULL NULL NULL NULL 4 Using where
  331. 2 DEPENDENT SUBQUERY t7 eq_ref PRIMARY PRIMARY 4 test.t6.clinic_uq 1 Using index
  332. Warnings:
  333. Note 1276 Field or reference 'clinic_uq' of SELECT #2 was resolved in SELECT #1
  334. Note 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))
  335. select * from t1 where a= (select a from t2,t4 where t2.b=t4.b);
  336. ERROR 23000: Column 'a' in field list is ambiguous
  337. drop table t1,t2,t3;
  338. CREATE TABLE t3 (a varchar(20),b char(1) NOT NULL default '0');
  339. INSERT INTO t3 VALUES ('W','a'),('A','c'),('J','b');
  340. CREATE TABLE t2 (a varchar(20),b int NOT NULL default '0');
  341. INSERT INTO t2 VALUES ('W','1'),('A','3'),('J','2');
  342. CREATE TABLE t1 (a varchar(20),b date NOT NULL default '0000-00-00');
  343. INSERT INTO t1 VALUES ('W','1732-02-22'),('A','1735-10-30'),('J','1743-04-13');
  344. SELECT * FROM t1 WHERE b = (SELECT MIN(b) FROM t1);
  345. a b
  346. W 1732-02-22
  347. SELECT * FROM t2 WHERE b = (SELECT MIN(b) FROM t2);
  348. a b
  349. W 1
  350. SELECT * FROM t3 WHERE b = (SELECT MIN(b) FROM t3);
  351. a b
  352. W a
  353. CREATE TABLE `t8` (
  354. `pseudo` varchar(35) character set latin1 NOT NULL default '',
  355. `email` varchar(60) character set latin1 NOT NULL default '',
  356. PRIMARY KEY  (`pseudo`),
  357. UNIQUE KEY `email` (`email`)
  358. ) ENGINE=MyISAM CHARSET=latin1 ROW_FORMAT=DYNAMIC;
  359. INSERT INTO t8 (pseudo,email) VALUES ('joce','test');
  360. INSERT INTO t8 (pseudo,email) VALUES ('joce1','test1');
  361. INSERT INTO t8 (pseudo,email) VALUES ('2joce1','2test1');
  362. 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');
  363. id select_type table type possible_keys key key_len ref rows Extra
  364. 1 PRIMARY t8 const PRIMARY PRIMARY 35 const 1 Using index
  365. 4 SUBQUERY t8 const PRIMARY PRIMARY 35 1 Using index
  366. 2 SUBQUERY t8 const PRIMARY PRIMARY 35 const 1
  367. 3 SUBQUERY t8 const PRIMARY PRIMARY 35 1 Using index
  368. Warnings:
  369. 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')))
  370. SELECT pseudo FROM t8 WHERE pseudo=(SELECT pseudo,email FROM
  371. t8 WHERE pseudo='joce');
  372. ERROR 21000: Operand should contain 1 column(s)
  373. SELECT pseudo FROM t8 WHERE pseudo=(SELECT * FROM t8 WHERE
  374. pseudo='joce');
  375. ERROR 21000: Operand should contain 1 column(s)
  376. SELECT pseudo FROM t8 WHERE pseudo=(SELECT pseudo FROM t8 WHERE pseudo='joce');
  377. pseudo
  378. joce
  379. SELECT pseudo FROM t8 WHERE pseudo=(SELECT pseudo FROM t8 WHERE pseudo LIKE '%joce%');
  380. ERROR 21000: Subquery returns more than 1 row
  381. drop table if exists t1,t2,t3,t4,t5,t6,t7,t8;
  382. CREATE TABLE `t1` (
  383. `topic` mediumint(8) unsigned NOT NULL default '0',
  384. `date` date NOT NULL default '0000-00-00',
  385. `pseudo` varchar(35) character set latin1 NOT NULL default '',
  386. PRIMARY KEY  (`pseudo`,`date`,`topic`),
  387. KEY `topic` (`topic`)
  388. ) ENGINE=MyISAM ROW_FORMAT=DYNAMIC;
  389. INSERT INTO t1 (topic,date,pseudo) VALUES
  390. ('43506','2002-10-02','joce'),('40143','2002-08-03','joce');
  391. EXPLAIN EXTENDED SELECT DISTINCT date FROM t1 WHERE date='2002-08-03';
  392. id select_type table type possible_keys key key_len ref rows Extra
  393. 1 SIMPLE t1 index NULL PRIMARY 41 NULL 2 Using where; Using index
  394. Warnings:
  395. Note 1003 select distinct test.t1.date AS `date` from test.t1 where (test.t1.date = 20020803)
  396. EXPLAIN EXTENDED SELECT (SELECT DISTINCT date FROM t1 WHERE date='2002-08-03');
  397. id select_type table type possible_keys key key_len ref rows Extra
  398. 1 PRIMARY NULL NULL NULL NULL NULL NULL NULL No tables used
  399. 2 SUBQUERY t1 index NULL PRIMARY 41 NULL 2 Using where; Using index
  400. Warnings:
  401. 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')`
  402. SELECT DISTINCT date FROM t1 WHERE date='2002-08-03';
  403. date
  404. 2002-08-03
  405. SELECT (SELECT DISTINCT date FROM t1 WHERE date='2002-08-03');
  406. (SELECT DISTINCT date FROM t1 WHERE date='2002-08-03')
  407. 2002-08-03
  408. SELECT 1 FROM t1 WHERE 1=(SELECT 1 UNION SELECT 1) UNION ALL SELECT 1;
  409. 1
  410. 1
  411. 1
  412. 1
  413. SELECT 1 FROM t1 WHERE 1=(SELECT 1 UNION ALL SELECT 1) UNION SELECT 1;
  414. ERROR 21000: Subquery returns more than 1 row
  415. EXPLAIN EXTENDED SELECT 1 FROM t1 WHERE 1=(SELECT 1 UNION SELECT 1);
  416. id select_type table type possible_keys key key_len ref rows Extra
  417. 1 PRIMARY t1 index NULL topic 3 NULL 2 Using index
  418. 2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL No tables used
  419. 3 UNION NULL NULL NULL NULL NULL NULL NULL No tables used
  420. NULL UNION RESULT <union2,3> ALL NULL NULL NULL NULL NULL
  421. Warnings:
  422. Note 1003 select 1 AS `1` from test.t1
  423. drop table t1;
  424. CREATE TABLE `t1` (
  425. `numeropost` mediumint(8) unsigned NOT NULL auto_increment,
  426. `maxnumrep` int(10) unsigned NOT NULL default '0',
  427. PRIMARY KEY  (`numeropost`),
  428. UNIQUE KEY `maxnumrep` (`maxnumrep`)
  429. ) ENGINE=MyISAM ROW_FORMAT=FIXED;
  430. INSERT INTO t1 (numeropost,maxnumrep) VALUES (40143,1),(43506,2);
  431. CREATE TABLE `t2` (
  432. `mot` varchar(30) NOT NULL default '',
  433. `topic` mediumint(8) unsigned NOT NULL default '0',
  434. `date` date NOT NULL default '0000-00-00',
  435. `pseudo` varchar(35) NOT NULL default '',
  436. PRIMARY KEY  (`mot`,`pseudo`,`date`,`topic`)
  437. ) ENGINE=MyISAM ROW_FORMAT=DYNAMIC;
  438. INSERT INTO t2 (mot,topic,date,pseudo) VALUES ('joce','40143','2002-10-22','joce'), ('joce','43506','2002-10-22','joce');
  439. select numeropost as a FROM t1 GROUP BY (SELECT 1 FROM t1 HAVING a=1);
  440. a
  441. 40143
  442. 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;
  443. numeropost maxnumrep
  444. 43506 2
  445. 40143 1
  446. SELECT (SELECT 1) as a FROM (SELECT 1 FROM t1 HAVING a=1) b;
  447. ERROR 42S22: Unknown column 'a' in 'having clause'
  448. SELECT 1 IN (SELECT 1 FROM t2 HAVING a);
  449. ERROR 42S22: Unknown column 'a' in 'having clause'
  450. SELECT * from t2 where topic IN (SELECT topic FROM t2 GROUP BY topic);
  451. mot topic date pseudo
  452. joce 40143 2002-10-22 joce
  453. joce 43506 2002-10-22 joce
  454. SELECT * from t2 where topic IN (SELECT topic FROM t2 GROUP BY topic HAVING topic < 4100);
  455. mot topic date pseudo
  456. SELECT * from t2 where topic IN (SELECT SUM(topic) FROM t1);
  457. mot topic date pseudo
  458. SELECT * from t2 where topic = any (SELECT topic FROM t2 GROUP BY topic);
  459. mot topic date pseudo
  460. joce 40143 2002-10-22 joce
  461. joce 43506 2002-10-22 joce
  462. SELECT * from t2 where topic = any (SELECT topic FROM t2 GROUP BY topic HAVING topic < 4100);
  463. mot topic date pseudo
  464. SELECT * from t2 where topic = any (SELECT SUM(topic) FROM t1);
  465. mot topic date pseudo
  466. SELECT * from t2 where topic = all (SELECT topic FROM t2 GROUP BY topic);
  467. mot topic date pseudo
  468. SELECT * from t2 where topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 4100);
  469. mot topic date pseudo
  470. joce 40143 2002-10-22 joce
  471. joce 43506 2002-10-22 joce
  472. SELECT *, topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 4100) from t2;
  473. mot topic date pseudo topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 4100)
  474. joce 40143 2002-10-22 joce 1
  475. joce 43506 2002-10-22 joce 1
  476. SELECT * from t2 where topic = all (SELECT SUM(topic) FROM t2);
  477. mot topic date pseudo
  478. SELECT * from t2 where topic <> any (SELECT SUM(topic) FROM t2);
  479. mot topic date pseudo
  480. joce 40143 2002-10-22 joce
  481. joce 43506 2002-10-22 joce
  482. SELECT * from t2 where topic IN (SELECT topic FROM t2 GROUP BY topic HAVING topic < 41000);
  483. mot topic date pseudo
  484. joce 40143 2002-10-22 joce
  485. SELECT * from t2 where topic = any (SELECT topic FROM t2 GROUP BY topic HAVING topic < 41000);
  486. mot topic date pseudo
  487. joce 40143 2002-10-22 joce
  488. SELECT * from t2 where topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 41000);
  489. mot topic date pseudo
  490. joce 40143 2002-10-22 joce
  491. SELECT *, topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 41000) from t2;
  492. mot topic date pseudo topic = all (SELECT topic FROM t2 GROUP BY topic HAVING topic < 41000)
  493. joce 40143 2002-10-22 joce 1
  494. joce 43506 2002-10-22 joce 0
  495. drop table t1,t2;
  496. CREATE TABLE `t1` (
  497. `numeropost` mediumint(8) unsigned NOT NULL auto_increment,
  498. `maxnumrep` int(10) unsigned NOT NULL default '0',
  499. PRIMARY KEY  (`numeropost`),
  500. UNIQUE KEY `maxnumrep` (`maxnumrep`)
  501. ) ENGINE=MyISAM ROW_FORMAT=FIXED;
  502. INSERT INTO t1 (numeropost,maxnumrep) VALUES (1,0),(2,1);
  503. select numeropost as a FROM t1 GROUP BY (SELECT 1 FROM t1 HAVING a=1);
  504. ERROR 21000: Subquery returns more than 1 row
  505. select numeropost as a FROM t1 ORDER BY (SELECT 1 FROM t1 HAVING a=1);
  506. ERROR 21000: Subquery returns more than 1 row
  507. drop table t1;
  508. create table t1 (a int);
  509. insert into t1 values (1),(2),(3);
  510. (select * from t1) union (select * from t1) order by (select a from t1 limit 1);
  511. a
  512. 1
  513. 2
  514. 3
  515. drop table t1;
  516. CREATE TABLE t1 (field char(1) NOT NULL DEFAULT 'b');
  517. INSERT INTO t1 VALUES ();
  518. SELECT field FROM t1 WHERE 1=(SELECT 1 UNION ALL SELECT 1 FROM (SELECT 1) a HAVING field='b');
  519. ERROR 21000: Subquery returns more than 1 row
  520. drop table t1;
  521. CREATE TABLE `t1` (
  522. `numeropost` mediumint(8) unsigned NOT NULL default '0',
  523. `numreponse` int(10) unsigned NOT NULL auto_increment,
  524. `pseudo` varchar(35) NOT NULL default '',
  525. PRIMARY KEY  (`numeropost`,`numreponse`),
  526. UNIQUE KEY `numreponse` (`numreponse`),
  527. KEY `pseudo` (`pseudo`,`numeropost`)
  528. ) ENGINE=MyISAM;
  529. SELECT (SELECT numeropost FROM t1 HAVING numreponse=a),numreponse FROM (SELECT * FROM t1) as a;
  530. ERROR 42S22: Reference 'numreponse' not supported (forward reference in item list)
  531. SELECT numreponse, (SELECT numeropost FROM t1 HAVING numreponse=a) FROM (SELECT * FROM t1) as a;
  532. ERROR 42S22: Unknown column 'a' in 'having clause'
  533. SELECT numreponse, (SELECT numeropost FROM t1 HAVING numreponse=1) FROM (SELECT * FROM t1) as a;
  534. numreponse (SELECT numeropost FROM t1 HAVING numreponse=1)
  535. INSERT INTO t1 (numeropost,numreponse,pseudo) VALUES (1,1,'joce'),(1,2,'joce'),(1,3,'test');
  536. EXPLAIN EXTENDED SELECT numreponse FROM t1 WHERE numeropost='1' AND numreponse=(SELECT 1 FROM t1 WHERE numeropost='1');
  537. ERROR 21000: Subquery returns more than 1 row
  538. EXPLAIN EXTENDED SELECT MAX(numreponse) FROM t1 WHERE numeropost='1';
  539. id select_type table type possible_keys key key_len ref rows Extra
  540. 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
  541. Warnings:
  542. Note 1003 select max(test.t1.numreponse) AS `MAX(numreponse)` from test.t1 where (test.t1.numeropost = _latin1'1')
  543. EXPLAIN EXTENDED SELECT numreponse FROM t1 WHERE numeropost='1' AND numreponse=(SELECT MAX(numreponse) FROM t1 WHERE numeropost='1');
  544. id select_type table type possible_keys key key_len ref rows Extra
  545. 1 PRIMARY t1 const PRIMARY,numreponse PRIMARY 7 const,const 1 Using index
  546. 2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
  547. Warnings:
  548. Note 1003 select test.t1.numreponse AS `numreponse` from test.t1 where ((test.t1.numeropost = _latin1'1') and (test.t1.numreponse = 3))
  549. drop table t1;
  550. CREATE TABLE t1 (a int(1));
  551. INSERT INTO t1 VALUES (1);
  552. SELECT 1 FROM (SELECT a FROM t1) b HAVING (SELECT b.a)=1;
  553. 1
  554. 1
  555. drop table t1;
  556. create table t1 (a int NOT NULL, b int, primary key (a));
  557. create table t2 (a int NOT NULL, b int, primary key (a));
  558. insert into t1 values (0, 10),(1, 11),(2, 12);
  559. insert into t2 values (1, 21),(2, 22),(3, 23);
  560. select * from t1;
  561. a b
  562. 0 10
  563. 1 11
  564. 2 12
  565. update t1 set b= (select b from t1);
  566. ERROR HY000: You can't specify target table 't1' for update in FROM clause
  567. update t1 set b= (select b from t2);
  568. ERROR 21000: Subquery returns more than 1 row
  569. update t1 set b= (select b from t2 where t1.a = t2.a);
  570. select * from t1;
  571. a b
  572. 0 NULL
  573. 1 21
  574. 2 22
  575. drop table t1, t2;
  576. create table t1 (a int NOT NULL, b int, primary key (a));
  577. create table t2 (a int NOT NULL, b int, primary key (a));
  578. insert into t1 values (0, 10),(1, 11),(2, 12);
  579. insert into t2 values (1, 21),(2, 12),(3, 23);
  580. select * from t1;
  581. a b
  582. 0 10
  583. 1 11
  584. 2 12
  585. select * from t1 where b = (select b from t2 where t1.a = t2.a);
  586. a b
  587. 2 12
  588. delete from t1 where b = (select b from t1);
  589. ERROR HY000: You can't specify target table 't1' for update in FROM clause
  590. delete from t1 where b = (select b from t2);
  591. ERROR 21000: Subquery returns more than 1 row
  592. delete from t1 where b = (select b from t2 where t1.a = t2.a);
  593. select * from t1;
  594. a b
  595. 0 10
  596. 1 11
  597. drop table t1, t2;
  598. create table t11 (a int NOT NULL, b int, primary key (a));
  599. create table t12 (a int NOT NULL, b int, primary key (a));
  600. create table t2 (a int NOT NULL, b int, primary key (a));
  601. insert into t11 values (0, 10),(1, 11),(2, 12);
  602. insert into t12 values (33, 10),(22, 11),(2, 12);
  603. insert into t2 values (1, 21),(2, 12),(3, 23);
  604. select * from t11;
  605. a b
  606. 0 10
  607. 1 11
  608. 2 12
  609. select * from t12;
  610. a b
  611. 33 10
  612. 22 11
  613. 2 12
  614. delete t11.*, t12.* from t11,t12 where t11.a = t12.a and t11.b = (select b from t12 where t11.a = t12.a);
  615. ERROR HY000: You can't specify target table 't12' for update in FROM clause
  616. delete t11.*, t12.* from t11,t12 where t11.a = t12.a and t11.b = (select b from t2);
  617. ERROR 21000: Subquery returns more than 1 row
  618. delete t11.*, t12.* from t11,t12 where t11.a = t12.a and t11.b = (select b from t2 where t11.a = t2.a);
  619. select * from t11;
  620. a b
  621. 0 10
  622. 1 11
  623. select * from t12;
  624. a b
  625. 33 10
  626. 22 11
  627. drop table t11, t12, t2;
  628. CREATE TABLE t1 (x int);
  629. create table t2 (a int);
  630. create table t3 (b int);
  631. insert into t2 values (1);
  632. insert into t3 values (1),(2);
  633. INSERT INTO t1 (x) VALUES ((SELECT x FROM t1));
  634. ERROR HY000: You can't specify target table 't1' for update in FROM clause
  635. INSERT INTO t1 (x) VALUES ((SELECT b FROM t3));
  636. ERROR 21000: Subquery returns more than 1 row
  637. INSERT INTO t1 (x) VALUES ((SELECT a FROM t2));
  638. select * from t1;
  639. x
  640. 1
  641. insert into t2 values (1);
  642. INSERT DELAYED INTO t1 (x) VALUES ((SELECT SUM(a) FROM t2));
  643. select * from t1;
  644. x
  645. 1
  646. 2
  647. INSERT INTO t1 (x) select (SELECT SUM(a)+1 FROM t2) FROM t2;
  648. select * from t1;
  649. x
  650. 1
  651. 2
  652. 3
  653. 3
  654. INSERT INTO t1 (x) select (SELECT SUM(x)+2 FROM t1) FROM t2;
  655. INSERT DELAYED INTO t1 (x) VALUES ((SELECT SUM(x) FROM t2));
  656. ERROR 42S22: Unknown column 'x' in 'field list'
  657. INSERT DELAYED INTO t1 (x) VALUES ((SELECT SUM(a) FROM t2));
  658. select * from t1;
  659. x
  660. 1
  661. 2
  662. 3
  663. 3
  664. 11
  665. 11
  666. 2
  667. drop table t1, t2, t3;
  668. CREATE TABLE t1 (x int not null, y int, primary key (x));
  669. create table t2 (a int);
  670. create table t3 (a int);
  671. insert into t2 values (1);
  672. insert into t3 values (1),(2);
  673. select * from t1;
  674. x y
  675. replace into t1 (x, y) VALUES ((SELECT x FROM t1), (SELECT a+1 FROM t2));
  676. ERROR HY000: You can't specify target table 't1' for update in FROM clause
  677. replace into t1 (x, y) VALUES ((SELECT a FROM t3), (SELECT a+1 FROM t2));
  678. ERROR 21000: Subquery returns more than 1 row
  679. replace into t1 (x, y) VALUES ((SELECT a FROM t2), (SELECT a+1 FROM t2));
  680. select * from t1;
  681. x y
  682. 1 2
  683. replace into t1 (x, y) VALUES ((SELECT a FROM t2), (SELECT a+2 FROM t2));
  684. select * from t1;
  685. x y
  686. 1 3
  687. replace DELAYED into t1 (x, y) VALUES ((SELECT a+3 FROM t2), (SELECT a FROM t2));
  688. select * from t1;
  689. x y
  690. 1 3
  691. 4 1
  692. replace DELAYED into t1 (x, y) VALUES ((SELECT a+3 FROM t2), (SELECT a+1 FROM t2));
  693. select * from t1;
  694. x y
  695. 1 3
  696. 4 2
  697. replace LOW_PRIORITY into t1 (x, y) VALUES ((SELECT a+1 FROM t2), (SELECT a FROM t2));
  698. select * from t1;
  699. x y
  700. 1 3
  701. 4 2
  702. 2 1
  703. drop table t1, t2, t3;
  704. SELECT * FROM (SELECT 1) b WHERE 1 IN (SELECT *);
  705. ERROR HY000: No tables used
  706. CREATE TABLE t2 (id int(11) default NULL, KEY id (id)) ENGINE=MyISAM CHARSET=latin1;
  707. INSERT INTO t2 VALUES (1),(2);
  708. SELECT * FROM t2 WHERE id IN (SELECT 1);
  709. id
  710. 1
  711. EXPLAIN EXTENDED SELECT * FROM t2 WHERE id IN (SELECT 1);
  712. id select_type table type possible_keys key key_len ref rows Extra
  713. 1 PRIMARY t2 ref id id 5 const 1 Using where; Using index
  714. Warnings:
  715. Note 1249 Select 2 was reduced during optimization
  716. Note 1003 select test.t2.id AS `id` from test.t2 where (test.t2.id = 1)
  717. SELECT * FROM t2 WHERE id IN (SELECT 1 UNION SELECT 3);
  718. id
  719. 1
  720. SELECT * FROM t2 WHERE id IN (SELECT 1+(select 1));
  721. id
  722. 2
  723. EXPLAIN EXTENDED SELECT * FROM t2 WHERE id IN (SELECT 1+(select 1));
  724. id select_type table type possible_keys key key_len ref rows Extra
  725. 1 PRIMARY t2 ref id id 5 const 1 Using where; Using index
  726. Warnings:
  727. Note 1249 Select 3 was reduced during optimization
  728. Note 1249 Select 2 was reduced during optimization
  729. Note 1003 select test.t2.id AS `id` from test.t2 where (test.t2.id = (1 + 1))
  730. EXPLAIN EXTENDED SELECT * FROM t2 WHERE id IN (SELECT 1 UNION SELECT 3);
  731. id select_type table type possible_keys key key_len ref rows Extra
  732. 1 PRIMARY t2 index NULL id 5 NULL 2 Using where; Using index
  733. 2 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL No tables used
  734. 3 DEPENDENT UNION NULL NULL NULL NULL NULL NULL NULL No tables used
  735. NULL UNION RESULT <union2,3> ALL NULL NULL NULL NULL NULL
  736. Warnings:
  737. Note 1003 select test.t2.id AS `id` from test.t2 where <in_optimizer>(test.t2.id,<exists>(select 1 AS `Not_used` having (<cache>(test.t2.id) = <null_helper>(1)) union select 1 AS `Not_used` having (<cache>(test.t2.id) = <null_helper>(3))))
  738. SELECT * FROM t2 WHERE id IN (SELECT 5 UNION SELECT 3);
  739. id
  740. SELECT * FROM t2 WHERE id IN (SELECT 5 UNION SELECT 2);
  741. id
  742. 2
  743. INSERT INTO t2 VALUES ((SELECT * FROM t2));
  744. ERROR HY000: You can't specify target table 't2' for update in FROM clause
  745. INSERT INTO t2 VALUES ((SELECT id FROM t2));
  746. ERROR HY000: You can't specify target table 't2' for update in FROM clause
  747. SELECT * FROM t2;
  748. id
  749. 1
  750. 2
  751. CREATE TABLE t1 (id int(11) default NULL, KEY id (id)) ENGINE=MyISAM CHARSET=latin1;
  752. INSERT INTO t1 values (1),(1);
  753. UPDATE t2 SET id=(SELECT * FROM t1);
  754. ERROR 21000: Subquery returns more than 1 row
  755. drop table t2, t1;
  756. create table t1 (a int);
  757. insert into t1 values (1),(2),(3);
  758. select 1 IN (SELECT * from t1);
  759. 1 IN (SELECT * from t1)
  760. 1
  761. select 10 IN (SELECT * from t1);
  762. 10 IN (SELECT * from t1)
  763. 0
  764. select NULL IN (SELECT * from t1);
  765. NULL IN (SELECT * from t1)
  766. NULL
  767. update t1 set a=NULL where a=2;
  768. select 1 IN (SELECT * from t1);
  769. 1 IN (SELECT * from t1)
  770. 1
  771. select 3 IN (SELECT * from t1);
  772. 3 IN (SELECT * from t1)
  773. 1
  774. select 10 IN (SELECT * from t1);
  775. 10 IN (SELECT * from t1)
  776. NULL
  777. select 1 > ALL (SELECT * from t1);
  778. 1 > ALL (SELECT * from t1)
  779. 0
  780. select 10 > ALL (SELECT * from t1);
  781. 10 > ALL (SELECT * from t1)
  782. NULL
  783. select 1 > ANY (SELECT * from t1);
  784. 1 > ANY (SELECT * from t1)
  785. NULL
  786. select 10 > ANY (SELECT * from t1);
  787. 10 > ANY (SELECT * from t1)
  788. 1
  789. drop table t1;
  790. create table t1 (a varchar(20));
  791. insert into t1 values ('A'),('BC'),('DEF');
  792. select 'A' IN (SELECT * from t1);
  793. 'A' IN (SELECT * from t1)
  794. 1
  795. select 'XYZS' IN (SELECT * from t1);
  796. 'XYZS' IN (SELECT * from t1)
  797. 0
  798. select NULL IN (SELECT * from t1);
  799. NULL IN (SELECT * from t1)
  800. NULL
  801. update t1 set a=NULL where a='BC';
  802. select 'A' IN (SELECT * from t1);
  803. 'A' IN (SELECT * from t1)
  804. 1
  805. select 'DEF' IN (SELECT * from t1);
  806. 'DEF' IN (SELECT * from t1)
  807. 1
  808. select 'XYZS' IN (SELECT * from t1);
  809. 'XYZS' IN (SELECT * from t1)
  810. NULL
  811. select 'A' > ALL (SELECT * from t1);
  812. 'A' > ALL (SELECT * from t1)
  813. 0
  814. select 'XYZS' > ALL (SELECT * from t1);
  815. 'XYZS' > ALL (SELECT * from t1)
  816. NULL
  817. select 'A' > ANY (SELECT * from t1);
  818. 'A' > ANY (SELECT * from t1)
  819. NULL
  820. select 'XYZS' > ANY (SELECT * from t1);
  821. 'XYZS' > ANY (SELECT * from t1)
  822. 1
  823. drop table t1;
  824. create table t1 (a float);
  825. insert into t1 values (1.5),(2.5),(3.5);
  826. select 1.5 IN (SELECT * from t1);
  827. 1.5 IN (SELECT * from t1)
  828. 1
  829. select 10.5 IN (SELECT * from t1);
  830. 10.5 IN (SELECT * from t1)
  831. 0
  832. select NULL IN (SELECT * from t1);
  833. NULL IN (SELECT * from t1)
  834. NULL
  835. update t1 set a=NULL where a=2.5;
  836. select 1.5 IN (SELECT * from t1);
  837. 1.5 IN (SELECT * from t1)
  838. 1
  839. select 3.5 IN (SELECT * from t1);
  840. 3.5 IN (SELECT * from t1)
  841. 1
  842. select 10.5 IN (SELECT * from t1);
  843. 10.5 IN (SELECT * from t1)
  844. NULL
  845. select 1.5 > ALL (SELECT * from t1);
  846. 1.5 > ALL (SELECT * from t1)
  847. 0
  848. select 10.5 > ALL (SELECT * from t1);
  849. 10.5 > ALL (SELECT * from t1)
  850. NULL
  851. select 1.5 > ANY (SELECT * from t1);
  852. 1.5 > ANY (SELECT * from t1)
  853. NULL
  854. select 10.5 > ANY (SELECT * from t1);
  855. 10.5 > ANY (SELECT * from t1)
  856. 1
  857. explain extended select (select a+1) from t1;
  858. id select_type table type possible_keys key key_len ref rows Extra
  859. 1 PRIMARY t1 ALL NULL NULL NULL NULL 3
  860. Warnings:
  861. Note 1276 Field or reference 'a' of SELECT #2 was resolved in SELECT #1
  862. Note 1249 Select 2 was reduced during optimization
  863. Note 1003 select (test.t1.a + 1) AS `(select a+1)` from test.t1
  864. select (select a+1) from t1;
  865. (select a+1)
  866. 2.5
  867. NULL
  868. 4.5
  869. drop table t1;
  870. CREATE TABLE t1 (a int(11) NOT NULL default '0', PRIMARY KEY  (a));
  871. CREATE TABLE t2 (a int(11) default '0', INDEX (a));
  872. INSERT INTO t1 VALUES (1),(2),(3),(4);
  873. INSERT INTO t2 VALUES (1),(2),(3);
  874. SELECT t1.a, t1.a in (select t2.a from t2) FROM t1;
  875. a t1.a in (select t2.a from t2)
  876. 1 1
  877. 2 1
  878. 3 1
  879. 4 0
  880. explain extended SELECT t1.a, t1.a in (select t2.a from t2) FROM t1;
  881. id select_type table type possible_keys key key_len ref rows Extra
  882. 1 PRIMARY t1 index NULL PRIMARY 4 NULL 4 Using index
  883. 2 DEPENDENT SUBQUERY t2 index_subquery a a 5 func 2 Using index
  884. Warnings:
  885. Note 1003 select test.t1.a AS `a`,<in_optimizer>(test.t1.a,<exists>(<index_lookup>(<cache>(test.t1.a) in t2 on a chicking NULL))) AS `t1.a in (select t2.a from t2)` from test.t1
  886. CREATE TABLE t3 (a int(11) default '0');
  887. INSERT INTO t3 VALUES (1),(2),(3);
  888. SELECT t1.a, t1.a in (select t2.a from t2,t3 where t3.a=t2.a) FROM t1;
  889. a t1.a in (select t2.a from t2,t3 where t3.a=t2.a)
  890. 1 1
  891. 2 1
  892. 3 1
  893. 4 0
  894. explain extended SELECT t1.a, t1.a in (select t2.a from t2,t3 where t3.a=t2.a) FROM t1;
  895. id select_type table type possible_keys key key_len ref rows Extra
  896. 1 PRIMARY t1 index NULL PRIMARY 4 NULL 4 Using index
  897. 2 DEPENDENT SUBQUERY t2 ref_or_null a a 5 func 2 Using where; Using index
  898. 2 DEPENDENT SUBQUERY t3 ALL NULL NULL NULL NULL 3 Using where
  899. Warnings:
  900. Note 1003 select test.t1.a AS `a`,<in_optimizer>(test.t1.a,<exists>(select 1 AS `Not_used` from test.t2 join test.t3 where ((test.t3.a = test.t2.a) and ((<cache>(test.t1.a) = test.t2.a) or isnull(test.t2.a))) having <is_not_null_test>(test.t2.a))) AS `t1.a in (select t2.a from t2,t3 where t3.a=t2.a)` from test.t1
  901. drop table t1,t2,t3;
  902. create table t1 (a float);
  903. select 10.5 IN (SELECT * from t1 LIMIT 1);
  904. ERROR 42000: This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
  905. select 10.5 IN (SELECT * from t1 LIMIT 1 UNION SELECT 1.5);
  906. ERROR 42000: This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
  907. drop table t1;
  908. create table t1 (a int, b int, c varchar(10));
  909. create table t2 (a int);
  910. insert into t1 values (1,2,'a'),(2,3,'b'),(3,4,'c');
  911. insert into t2 values (1),(2),(NULL);
  912. 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;
  913. a (select a,b,c from t1 where t1.a=t2.a) = ROW(a,2,'a') (select c from t1 where a=t2.a)
  914. 1 1 a
  915. 2 0 b
  916. NULL NULL NULL
  917. 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;
  918. a (select a,b,c from t1 where t1.a=t2.a) = ROW(a,3,'b') (select c from t1 where a=t2.a)
  919. 1 0 a
  920. 2 1 b
  921. NULL NULL NULL
  922. 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;
  923. a (select a,b,c from t1 where t1.a=t2.a) = ROW(a,4,'c') (select c from t1 where a=t2.a)
  924. 1 0 a
  925. 2 0 b
  926. NULL NULL NULL
  927. drop table t1,t2;
  928. create table t1 (a int, b real, c varchar(10));
  929. insert into t1 values (1, 1, 'a'), (2,2,'b'), (NULL, 2, 'b');
  930. select ROW(1, 1, 'a') IN (select a,b,c from t1);
  931. ROW(1, 1, 'a') IN (select a,b,c from t1)
  932. 1
  933. select ROW(1, 2, 'a') IN (select a,b,c from t1);
  934. ROW(1, 2, 'a') IN (select a,b,c from t1)
  935. 0
  936. select ROW(1, 1, 'a') IN (select b,a,c from t1);
  937. ROW(1, 1, 'a') IN (select b,a,c from t1)
  938. 1
  939. select ROW(1, 1, 'a') IN (select a,b,c from t1 where a is not null);
  940. ROW(1, 1, 'a') IN (select a,b,c from t1 where a is not null)
  941. 1
  942. select ROW(1, 2, 'a') IN (select a,b,c from t1 where a is not null);
  943. ROW(1, 2, 'a') IN (select a,b,c from t1 where a is not null)
  944. 0
  945. select ROW(1, 1, 'a') IN (select b,a,c from t1 where a is not null);
  946. ROW(1, 1, 'a') IN (select b,a,c from t1 where a is not null)
  947. 1
  948. select ROW(1, 1, 'a') IN (select a,b,c from t1 where c='b' or c='a');
  949. ROW(1, 1, 'a') IN (select a,b,c from t1 where c='b' or c='a')
  950. 1
  951. select ROW(1, 2, 'a') IN (select a,b,c from t1 where c='b' or c='a');
  952. ROW(1, 2, 'a') IN (select a,b,c from t1 where c='b' or c='a')
  953. 0
  954. select ROW(1, 1, 'a') IN (select b,a,c from t1 where c='b' or c='a');
  955. ROW(1, 1, 'a') IN (select b,a,c from t1 where c='b' or c='a')
  956. 1
  957. select ROW(1, 1, 'a') IN (select b,a,c from t1 limit 2);
  958. ERROR 42000: This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
  959. drop table t1;
  960. create table t1 (a int);
  961. insert into t1 values (1);
  962. do @a:=(SELECT a from t1);
  963. select @a;
  964. @a
  965. 1
  966. set @a:=2;
  967. set @a:=(SELECT a from t1);
  968. select @a;
  969. @a
  970. 1
  971. drop table t1;
  972. do (SELECT a from t1);
  973. ERROR 42S02: Table 'test.t1' doesn't exist
  974. set @a:=(SELECT a from t1);
  975. ERROR 42S02: Table 'test.t1' doesn't exist
  976. CREATE TABLE t1 (a int, KEY(a));
  977. HANDLER t1 OPEN;
  978. HANDLER t1 READ a=((SELECT 1));
  979. 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 near 'SELECT 1))' at line 1
  980. HANDLER t1 CLOSE;
  981. drop table t1;
  982. create table t1 (a int);
  983. create table t2 (b int);
  984. insert into t1 values (1),(2);
  985. insert into t2 values (1);
  986. select a from t1 where a in (select a from t1 where a in (select b from t2));
  987. a
  988. 1
  989. drop table t1, t2;
  990. create table t1 (a int, b int);
  991. create table t2 like t1;
  992. insert into t1 values (1,2),(1,3),(1,4),(1,5);
  993. insert into t2 values (1,2),(1,3);
  994. select * from t1 where row(a,b) in (select a,b from t2);
  995. a b
  996. 1 2
  997. 1 3
  998. drop table t1, t2;
  999. CREATE TABLE `t1` (`i` int(11) NOT NULL default '0',PRIMARY KEY  (`i`)) ENGINE=MyISAM CHARSET=latin1;
  1000. INSERT INTO t1 VALUES (1);
  1001. UPDATE t1 SET i=i+1 WHERE i=(SELECT MAX(i));
  1002. select * from t1;
  1003. i
  1004. 1
  1005. drop table t1;
  1006. CREATE TABLE t1 (a int(1));
  1007. EXPLAIN EXTENDED SELECT (SELECT RAND() FROM t1) FROM t1;
  1008. id select_type table type possible_keys key key_len ref rows Extra
  1009. 1 PRIMARY t1 system NULL NULL NULL NULL 0 const row not found
  1010. 2 UNCACHEABLE SUBQUERY t1 system NULL NULL NULL NULL 0 const row not found
  1011. Warnings:
  1012. Note 1003 select sql_no_cache (select sql_no_cache rand() AS `RAND()` from test.t1) AS `(SELECT RAND() FROM t1)` from test.t1
  1013. EXPLAIN EXTENDED SELECT (SELECT ENCRYPT('test') FROM t1) FROM t1;
  1014. id select_type table type possible_keys key key_len ref rows Extra
  1015. 1 PRIMARY t1 system NULL NULL NULL NULL 0 const row not found
  1016. 2 UNCACHEABLE SUBQUERY t1 system NULL NULL NULL NULL 0 const row not found
  1017. Warnings:
  1018. Note 1003 select sql_no_cache (select sql_no_cache ecrypt(_latin1'test') AS `ENCRYPT('test')` from test.t1) AS `(SELECT ENCRYPT('test') FROM t1)` from test.t1
  1019. EXPLAIN EXTENDED SELECT (SELECT BENCHMARK(1,1) FROM t1) FROM t1;
  1020. id select_type table type possible_keys key key_len ref rows Extra
  1021. 1 PRIMARY t1 system NULL NULL NULL NULL 0 const row not found
  1022. 2 UNCACHEABLE SUBQUERY t1 system NULL NULL NULL NULL 0 const row not found
  1023. Warnings:
  1024. Note 1003 select sql_no_cache (select sql_no_cache benchmark(1,1) AS `BENCHMARK(1,1)` from test.t1) AS `(SELECT BENCHMARK(1,1) FROM t1)` from test.t1
  1025. drop table t1;
  1026. CREATE TABLE `t1` (
  1027. `mot` varchar(30) character set latin1 NOT NULL default '',
  1028. `topic` mediumint(8) unsigned NOT NULL default '0',
  1029. `date` date NOT NULL default '0000-00-00',
  1030. `pseudo` varchar(35) character set latin1 NOT NULL default '',
  1031. PRIMARY KEY  (`mot`,`pseudo`,`date`,`topic`),
  1032. KEY `pseudo` (`pseudo`,`date`,`topic`),
  1033. KEY `topic` (`topic`)
  1034. ) ENGINE=MyISAM CHARSET=latin1 ROW_FORMAT=DYNAMIC;
  1035. CREATE TABLE `t2` (
  1036. `mot` varchar(30) character set latin1 NOT NULL default '',
  1037. `topic` mediumint(8) unsigned NOT NULL default '0',
  1038. `date` date NOT NULL default '0000-00-00',
  1039. `pseudo` varchar(35) character set latin1 NOT NULL default '',
  1040. PRIMARY KEY  (`mot`,`pseudo`,`date`,`topic`),
  1041. KEY `pseudo` (`pseudo`,`date`,`topic`),
  1042. KEY `topic` (`topic`)
  1043. ) ENGINE=MyISAM CHARSET=latin1 ROW_FORMAT=DYNAMIC;
  1044. CREATE TABLE `t3` (
  1045. `numeropost` mediumint(8) unsigned NOT NULL auto_increment,
  1046. `maxnumrep` int(10) unsigned NOT NULL default '0',
  1047. PRIMARY KEY  (`numeropost`),
  1048. UNIQUE KEY `maxnumrep` (`maxnumrep`)
  1049. ) ENGINE=MyISAM CHARSET=latin1;
  1050. INSERT INTO t1 VALUES ('joce','1','','joce'),('test','2','','test');
  1051. Warnings:
  1052. Warning 1265 Data truncated for column 'date' at row 1
  1053. Warning 1265 Data truncated for column 'date' at row 2
  1054. INSERT INTO t2 VALUES ('joce','1','','joce'),('test','2','','test');
  1055. Warnings:
  1056. Warning 1265 Data truncated for column 'date' at row 1
  1057. Warning 1265 Data truncated for column 'date' at row 2
  1058. INSERT INTO t3 VALUES (1,1);
  1059. SELECT DISTINCT topic FROM t2 WHERE NOT EXISTS(SELECT * FROM t3 WHERE
  1060. numeropost=topic);
  1061. topic
  1062. 2
  1063. select * from t1;
  1064. mot topic date pseudo
  1065. joce 1 0000-00-00 joce
  1066. test 2 0000-00-00 test
  1067. DELETE FROM t1 WHERE topic IN (SELECT DISTINCT topic FROM t2 WHERE NOT
  1068. EXISTS(SELECT * FROM t3 WHERE numeropost=topic));
  1069. select * from t1;
  1070. mot topic date pseudo
  1071. joce 1 0000-00-00 joce
  1072. drop table t1, t2, t3;
  1073. SELECT * FROM (SELECT 1 as a,(SELECT a)) a;
  1074. a (SELECT a)
  1075. 1 1
  1076. CREATE TABLE t1 SELECT * FROM (SELECT 1 as a,(SELECT 1)) a;
  1077. SHOW CREATE TABLE t1;
  1078. Table Create Table
  1079. t1 CREATE TABLE `t1` (
  1080.   `a` bigint(20) NOT NULL default '0',
  1081.   `(SELECT 1)` bigint(20) NOT NULL default '0'
  1082. ) ENGINE=MyISAM DEFAULT CHARSET=latin1
  1083. drop table t1;
  1084. CREATE TABLE t1 SELECT * FROM (SELECT 1 as a,(SELECT a)) a;
  1085. SHOW CREATE TABLE t1;
  1086. Table Create Table
  1087. t1 CREATE TABLE `t1` (
  1088.   `a` bigint(20) NOT NULL default '0',
  1089.   `(SELECT a)` bigint(20) NOT NULL default '0'
  1090. ) ENGINE=MyISAM DEFAULT CHARSET=latin1
  1091. drop table t1;
  1092. CREATE TABLE t1 SELECT * FROM (SELECT 1 as a,(SELECT a+0)) a;
  1093. SHOW CREATE TABLE t1;
  1094. Table Create Table
  1095. t1 CREATE TABLE `t1` (
  1096.   `a` bigint(20) NOT NULL default '0',
  1097.   `(SELECT a+0)` bigint(20) NOT NULL default '0'
  1098. ) ENGINE=MyISAM DEFAULT CHARSET=latin1
  1099. drop table t1;
  1100. CREATE TABLE t1 SELECT (SELECT 1 as a UNION SELECT 1+1 limit 1,1) as a;
  1101. select * from t1;
  1102. a
  1103. 2
  1104. SHOW CREATE TABLE t1;
  1105. Table Create Table
  1106. t1 CREATE TABLE `t1` (
  1107.   `a` bigint(20) NOT NULL default '0'
  1108. ) ENGINE=MyISAM DEFAULT CHARSET=latin1
  1109. drop table t1;
  1110. create table t1 (a int);
  1111. insert into t1 values (1), (2), (3);
  1112. explain extended select a,(select (select rand() from t1 limit 1)  from t1 limit 1)
  1113. from t1;
  1114. id select_type table type possible_keys key key_len ref rows Extra
  1115. 1 PRIMARY t1 ALL NULL NULL NULL NULL 3
  1116. 2 UNCACHEABLE SUBQUERY t1 ALL NULL NULL NULL NULL 3
  1117. 3 UNCACHEABLE SUBQUERY t1 ALL NULL NULL NULL NULL 3
  1118. Warnings:
  1119. Note 1003 select sql_no_cache test.t1.a AS `a`,(select sql_no_cache (select sql_no_cache rand() AS `rand()` from test.t1 limit 1) AS `(select rand() from t1 limit 1)` from test.t1 limit 1) AS `(select (select rand() from t1 limit 1)  from t1 limit 1)` from test.t1
  1120. drop table t1;
  1121. 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);
  1122. ERROR 42S02: Table 'test.t1' doesn't exist
  1123. CREATE TABLE t1 (
  1124. ID int(11) NOT NULL auto_increment,
  1125. name char(35) NOT NULL default '',
  1126. t2 char(3) NOT NULL default '',
  1127. District char(20) NOT NULL default '',
  1128. Population int(11) NOT NULL default '0',
  1129. PRIMARY KEY  (ID)
  1130. ) ENGINE=MyISAM;
  1131. INSERT INTO t1 VALUES (130,'Sydney','AUS','New South Wales',3276207);
  1132. INSERT INTO t1 VALUES (131,'Melbourne','AUS','Victoria',2865329);
  1133. INSERT INTO t1 VALUES (132,'Brisbane','AUS','Queensland',1291117);
  1134. CREATE TABLE t2 (
  1135. Code char(3) NOT NULL default '',
  1136. Name char(52) NOT NULL default '',
  1137. Continent enum('Asia','Europe','North America','Africa','Oceania','Antarctica','South America') NOT NULL default 'Asia',
  1138. Region char(26) NOT NULL default '',
  1139. SurfaceArea float(10,2) NOT NULL default '0.00',
  1140. IndepYear smallint(6) default NULL,
  1141. Population int(11) NOT NULL default '0',
  1142. LifeExpectancy float(3,1) default NULL,
  1143. GNP float(10,2) default NULL,
  1144. GNPOld float(10,2) default NULL,
  1145. LocalName char(45) NOT NULL default '',
  1146. GovernmentForm char(45) NOT NULL default '',
  1147. HeadOfState char(60) default NULL,
  1148. Capital int(11) default NULL,
  1149. Code2 char(2) NOT NULL default '',
  1150. PRIMARY KEY  (Code)
  1151. ) ENGINE=MyISAM;
  1152. 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');
  1153. INSERT INTO t2 VALUES ('AZE','Azerbaijan','Asia','Middle East',86600.00,1991,7734000,62.9,4127.00,4100.00,'Az鋜baycan','Federal Republic','Heyd鋜 膌iyev',144,'AZ');
  1154. 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);
  1155. Continent Name Population
  1156. Oceania Sydney 3276207
  1157. drop table t1, t2;
  1158. CREATE TABLE `t1` (
  1159. `id` mediumint(8) unsigned NOT NULL auto_increment,
  1160. `pseudo` varchar(35) character set latin1 NOT NULL default '',
  1161. PRIMARY KEY  (`id`),
  1162. UNIQUE KEY `pseudo` (`pseudo`)
  1163. ) ENGINE=MyISAM PACK_KEYS=1 ROW_FORMAT=DYNAMIC;
  1164. INSERT INTO t1 (pseudo) VALUES ('test');
  1165. SELECT 0 IN (SELECT 1 FROM t1 a);
  1166. 0 IN (SELECT 1 FROM t1 a)
  1167. 0
  1168. EXPLAIN EXTENDED SELECT 0 IN (SELECT 1 FROM t1 a);
  1169. id select_type table type possible_keys key key_len ref rows Extra
  1170. 1 PRIMARY NULL NULL NULL NULL NULL NULL NULL No tables used
  1171. 2 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
  1172. Warnings:
  1173. Note 1003 select <in_optimizer>(0,<exists>(select 1 AS `Not_used` from test.t1 a)) AS `0 IN (SELECT 1 FROM t1 a)`
  1174. INSERT INTO t1 (pseudo) VALUES ('test1');
  1175. SELECT 0 IN (SELECT 1 FROM t1 a);
  1176. 0 IN (SELECT 1 FROM t1 a)
  1177. 0
  1178. EXPLAIN EXTENDED SELECT 0 IN (SELECT 1 FROM t1 a);
  1179. id select_type table type possible_keys key key_len ref rows Extra
  1180. 1 PRIMARY NULL NULL NULL NULL NULL NULL NULL No tables used
  1181. 2 DEPENDENT SUBQUERY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
  1182. Warnings:
  1183. Note 1003 select <in_optimizer>(0,<exists>(select 1 AS `Not_used` from test.t1 a)) AS `0 IN (SELECT 1 FROM t1 a)`
  1184. drop table t1;
  1185. CREATE TABLE `t1` (
  1186. `i` int(11) NOT NULL default '0',
  1187. PRIMARY KEY  (`i`)
  1188. ) ENGINE=MyISAM CHARSET=latin1;
  1189. INSERT INTO t1 VALUES (1);
  1190. UPDATE t1 SET i=i+(SELECT MAX(i) FROM (SELECT 1) t) WHERE i=(SELECT MAX(i));
  1191. UPDATE t1 SET i=i+1 WHERE i=(SELECT MAX(i));
  1192. UPDATE t1 SET t.i=i+(SELECT MAX(i) FROM (SELECT 1) t);
  1193. ERROR 42S02: Unknown table 't' in field list
  1194. select * from t1;
  1195. i
  1196. 1
  1197. drop table t1;
  1198. CREATE TABLE t1 (
  1199. id int(11) default NULL
  1200. ) ENGINE=MyISAM CHARSET=latin1;
  1201. INSERT INTO t1 VALUES (1),(1),(2),(2),(1),(3);
  1202. CREATE TABLE t2 (
  1203. id int(11) default NULL,
  1204. name varchar(15) default NULL
  1205. ) ENGINE=MyISAM CHARSET=latin1;
  1206. INSERT INTO t2 VALUES (4,'vita'), (1,'vita'), (2,'vita'), (1,'vita');
  1207. update t1, t2 set t2.name='lenka' where t2.id in (select id from t1);
  1208. select * from t2;
  1209. id name
  1210. 4 vita
  1211. 1 lenka
  1212. 2 lenka
  1213. 1 lenka
  1214. drop table t1,t2;
  1215. create table t1 (a int, unique index indexa (a));
  1216. insert into t1 values (-1), (-4), (-2), (NULL);
  1217. select -10 IN (select a from t1 FORCE INDEX (indexa));
  1218. -10 IN (select a from t1 FORCE INDEX (indexa))
  1219. NULL
  1220. drop table t1;
  1221. create table t1 (id int not null auto_increment primary key, salary int, key(salary));
  1222. insert into t1 (salary) values (100),(1000),(10000),(10),(500),(5000),(50000);
  1223. explain extended SELECT id FROM t1 where salary = (SELECT MAX(salary) FROM t1);
  1224. id select_type table type possible_keys key key_len ref rows Extra
  1225. 1 PRIMARY t1 ref salary salary 5 const 1 Using where
  1226. 2 SUBQUERY NULL NULL NULL NULL NULL NULL NULL Select tables optimized away
  1227. Warnings:
  1228. Note 1003 select test.t1.id AS `id` from test.t1 where (test.t1.salary = (select max(test.t1.salary) AS `MAX(salary)` from test.t1))
  1229. drop table t1;
  1230. CREATE TABLE t1 (
  1231. ID int(10) unsigned NOT NULL auto_increment,
  1232. SUB_ID int(3) unsigned NOT NULL default '0',
  1233. REF_ID int(10) unsigned default NULL,
  1234. REF_SUB int(3) unsigned default '0',
  1235. PRIMARY KEY (ID,SUB_ID),
  1236. UNIQUE KEY t1_PK (ID,SUB_ID),
  1237. KEY t1_FK (REF_ID,REF_SUB),
  1238. KEY t1_REFID (REF_ID)
  1239. ) ENGINE=MyISAM CHARSET=cp1251;
  1240. INSERT INTO t1 VALUES (1,0,NULL,NULL),(2,0,NULL,NULL);
  1241. SELECT DISTINCT REF_ID FROM t1 WHERE ID= (SELECT DISTINCT REF_ID FROM t1 WHERE ID=2);
  1242. REF_ID
  1243. DROP TABLE t1;
  1244. create table t1 (a int, b int);
  1245. create table t2 (a int, b int);
  1246. insert into t1 values (1,0), (2,0), (3,0);
  1247. insert into t2 values (1,1), (2,1), (3,1), (2,2);
  1248. update ignore t1 set b=(select b from t2 where t1.a=t2.a);
  1249. Warnings:
  1250. Error 1242 Subquery returns more than 1 row
  1251. select * from t1;
  1252. a b
  1253. 1 1
  1254. 2 NULL
  1255. 3 1
  1256. drop table t1, t2;
  1257. CREATE TABLE `t1` (
  1258. `id` mediumint(8) unsigned NOT NULL auto_increment,
  1259. `pseudo` varchar(35) NOT NULL default '',
  1260. `email` varchar(60) NOT NULL default '',
  1261. PRIMARY KEY  (`id`),
  1262. UNIQUE KEY `email` (`email`),
  1263. UNIQUE KEY `pseudo` (`pseudo`)
  1264. ) ENGINE=MyISAM CHARSET=latin1 PACK_KEYS=1 ROW_FORMAT=DYNAMIC;
  1265. INSERT INTO t1 (id,pseudo,email) VALUES (1,'test','test'),(2,'test1','test1');
  1266. SELECT pseudo as a, pseudo as b FROM t1 GROUP BY (SELECT a) ORDER BY (SELECT id*1);
  1267. a b
  1268. test test
  1269. test1 test1
  1270. drop table if exists t1;
  1271. (SELECT 1 as a) UNION (SELECT 1) ORDER BY (SELECT a+0);
  1272. a
  1273. 1
  1274. create table t1 (a int not null, b int, primary key (a));
  1275. create table t2 (a int not null, primary key (a));
  1276. create table t3 (a int not null, b int, primary key (a));
  1277. insert into t1 values (1,10), (2,20), (3,30),  (4,40);
  1278. insert into t2 values (2), (3), (4), (5);
  1279. insert into t3 values (10,3), (20,4), (30,5);
  1280. select * from t2 where t2.a in (select a from t1);
  1281. a
  1282. 2
  1283. 3
  1284. 4
  1285. explain extended select * from t2 where t2.a in (select a from t1);
  1286. id select_type table type possible_keys key key_len ref rows Extra
  1287. 1 PRIMARY t2 index NULL PRIMARY 4 NULL 4 Using where; Using index
  1288. 2 DEPENDENT SUBQUERY t1 unique_subquery PRIMARY PRIMARY 4 func 1 Using index
  1289. Warnings:
  1290. Note 1003 select test.t2.a AS `a` from test.t2 where <in_optimizer>(test.t2.a,<exists>(<primary_index_lookup>(<cache>(test.t2.a) in t1 on PRIMARY)))
  1291. select * from t2 where t2.a in (select a from t1 where t1.b <> 30);
  1292. a
  1293. 2
  1294. 4
  1295. explain extended select * from t2 where t2.a in (select a from t1 where t1.b <> 30);
  1296. id select_type table type possible_keys key key_len ref rows Extra
  1297. 1 PRIMARY t2 index NULL PRIMARY 4 NULL 4 Using where; Using index
  1298. 2 DEPENDENT SUBQUERY t1 unique_subquery PRIMARY PRIMARY 4 func 1 Using index; Using where
  1299. Warnings:
  1300. Note 1003 select test.t2.a AS `a` from test.t2 where <in_optimizer>(test.t2.a,<exists>(<primary_index_lookup>(<cache>(test.t2.a) in t1 on PRIMARY where (test.t1.b <> 30))))
  1301. select * from t2 where t2.a in (select t1.a from t1,t3 where t1.b=t3.a);
  1302. a
  1303. 2
  1304. 3
  1305. explain extended select * from t2 where t2.a in (select t1.a from t1,t3 where t1.b=t3.a);
  1306. id select_type table type possible_keys key key_len ref rows Extra
  1307. 1 PRIMARY t2 index NULL PRIMARY 4 NULL 4 Using where; Using index
  1308. 2 DEPENDENT SUBQUERY t1 eq_ref PRIMARY PRIMARY 4 func 1 Using where
  1309. 2 DEPENDENT SUBQUERY t3 eq_ref PRIMARY PRIMARY 4 test.t1.b 1 Using where; Using index
  1310. Warnings:
  1311. Note 1003 select test.t2.a AS `a` from test.t2 where <in_optimizer>(test.t2.a,<exists>(select 1 AS `Not_used` from test.t1 join test.t3 where ((test.t1.b = test.t3.a) and (<cache>(test.t2.a) = test.t1.a))))
  1312. drop table t1, t2, t3;
  1313. create table t1 (a int, b int, index a (a,b));
  1314. create table t2 (a int, index a (a));
  1315. create table t3 (a int, b int, index a (a));
  1316. insert into t1 values (1,10), (2,20), (3,30), (4,40);
  1317. insert into t2 values (2), (3), (4), (5);
  1318. insert into t3 values (10,3), (20,4), (30,5);
  1319. select * from t2 where t2.a in (select a from t1);
  1320. a
  1321. 2
  1322. 3
  1323. 4
  1324. explain extended select * from t2 where t2.a in (select a from t1);
  1325. id select_type table type possible_keys key key_len ref rows Extra
  1326. 1 PRIMARY t2 index NULL a 5 NULL 4 Using where; Using index
  1327. 2 DEPENDENT SUBQUERY t1 index_subquery a a 5 func 1001 Using index
  1328. Warnings:
  1329. Note 1003 select test.t2.a AS `a` from test.t2 where <in_optimizer>(test.t2.a,<exists>(<index_lookup>(<cache>(test.t2.a) in t1 on a)))
  1330. select * from t2 where t2.a in (select a from t1 where t1.b <> 30);
  1331. a
  1332. 2
  1333. 4
  1334. explain extended select * from t2 where t2.a in (select a from t1 where t1.b <> 30);
  1335. id select_type table type possible_keys key key_len ref rows Extra
  1336. 1 PRIMARY t2 index NULL a 5 NULL 4 Using where; Using index
  1337. 2 DEPENDENT SUBQUERY t1 index_subquery a a 5 func 1001 Using index; Using where
  1338. Warnings:
  1339. Note 1003 select test.t2.a AS `a` from test.t2 where <in_optimizer>(test.t2.a,<exists>(<index_lookup>(<cache>(test.t2.a) in t1 on a where (test.t1.b <> 30))))
  1340. select * from t2 where t2.a in (select t1.a from t1,t3 where t1.b=t3.a);
  1341. a
  1342. 2
  1343. 3
  1344. explain extended select * from t2 where t2.a in (select t1.a from t1,t3 where t1.b=t3.a);
  1345. id select_type table type possible_keys key key_len ref rows Extra
  1346. 1 PRIMARY t2 index NULL a 5 NULL 4 Using where; Using index
  1347. 2 DEPENDENT SUBQUERY t1 ref a a 5 func 1001 Using where; Using index
  1348. 2 DEPENDENT SUBQUERY t3 index a a 5 NULL 3 Using where; Using index
  1349. Warnings:
  1350. Note 1003 select test.t2.a AS `a` from test.t2 where <in_optimizer>(test.t2.a,<exists>(select 1 AS `Not_used` from test.t1 join test.t3 where ((test.t1.b = test.t3.a) and (<cache>(test.t2.a) = test.t1.a))))
  1351. insert into t1 values (3,31);
  1352. select * from t2 where t2.a in (select a from t1 where t1.b <> 30);
  1353. a
  1354. 2
  1355. 3
  1356. 4
  1357. select * from t2 where t2.a in (select a from t1 where t1.b <> 30 and t1.b <> 31);
  1358. a
  1359. 2
  1360. 4
  1361. explain extended select * from t2 where t2.a in (select a from t1 where t1.b <> 30);
  1362. id select_type table type possible_keys key key_len ref rows Extra
  1363. 1 PRIMARY t2 index NULL a 5 NULL 4 Using where; Using index
  1364. 2 DEPENDENT SUBQUERY t1 index_subquery a a 5 func 1001 Using index; Using where
  1365. Warnings:
  1366. Note 1003 select test.t2.a AS `a` from test.t2 where <in_optimizer>(test.t2.a,<exists>(<index_lookup>(<cache>(test.t2.a) in t1 on a where (test.t1.b <> 30))))
  1367. drop table t1, t2, t3;
  1368. create table t1 (a int, b int);
  1369. create table t2 (a int, b int);
  1370. create table t3 (a int, b int);
  1371. insert into t1 values (0,100),(1,2), (1,3), (2,2), (2,7), (2,-1), (3,10);
  1372. insert into t2 values (0,0), (1,1), (2,1), (3,1), (4,1);
  1373. insert into t3 values (3,3), (2,2), (1,1);
  1374. select a,(select count(distinct t1.b) as sum from t1,t2 where t1.a=t2.a and t2.b > 0 and t1.a <= t3.b group by t1.a order by sum limit 1) from t3;
  1375. a (select count(distinct t1.b) as sum from t1,t2 where t1.a=t2.a and t2.b > 0 and t1.a <= t3.b group by t1.a order by sum limit 1)
  1376. 3 1
  1377. 2 2
  1378. 1 2
  1379. drop table t1,t2,t3;
  1380. create table t1 (s1 int);
  1381. create table t2 (s1 int);
  1382. insert into t1 values (1);
  1383. insert into t2 values (1);
  1384. select * from t1 where exists (select s1 from t2 having max(t2.s1)=t1.s1);
  1385. s1
  1386. 1
  1387. drop table t1,t2;
  1388. create table t1 (s1 int);
  1389. create table t2 (s1 int);
  1390. insert into t1 values (1);
  1391. insert into t2 values (1);
  1392. update t1 set  s1 = s1 + 1 where 1 = (select x.s1 as A from t2 WHERE t2.s1 > t1.s1 order by A);
  1393. ERROR 42S22: Unknown column 'x.s1' in 'field list'
  1394. DROP TABLE t1, t2;
  1395. CREATE TABLE t1 (s1 CHAR(5) COLLATE latin1_german1_ci,
  1396. s2 CHAR(5) COLLATE latin1_swedish_ci);
  1397. INSERT INTO t1 VALUES ('z','?');
  1398. select * from t1 where s1 > (select max(s2) from t1);
  1399. ERROR HY000: Illegal mix of collations (latin1_german1_ci,IMPLICIT) and (latin1_swedish_ci,IMPLICIT) for operation '>'
  1400. select * from t1 where s1 > any (select max(s2) from t1);
  1401. ERROR HY000: Illegal mix of collations (latin1_german1_ci,IMPLICIT) and (latin1_swedish_ci,IMPLICIT) for operation '>'
  1402. drop table t1;
  1403. create table t1(toid int,rd int);
  1404. create table t2(userid int,pmnew int,pmtotal int);
  1405. insert into t2 values(1,0,0),(2,0,0);
  1406. insert into t1 values(1,0),(1,0),(1,0),(1,12),(1,15),(1,123),(1,12312),(1,12312),(1,123),(2,0),(2,0),(2,1),(2,2);
  1407. select userid,pmtotal,pmnew, (select count(rd) from t1 where toid=t2.userid) calc_total, (select count(rd) from t1 where rd=0 and toid=t2.userid) calc_new from t2 where userid in (select distinct toid from t1);
  1408. userid pmtotal pmnew calc_total calc_new
  1409. 1 0 0 9 3
  1410. 2 0 0 4 2
  1411. drop table t1, t2;
  1412. create table t1 (s1 char(5));
  1413. select (select 'a','b' from t1 union select 'a','b' from t1) from t1;
  1414. ERROR 21000: Operand should contain 1 column(s)
  1415. insert into t1 values ('tttt');
  1416. select * from t1 where ('a','b')=(select 'a','b' from t1 union select 'a','b' from t1);
  1417. s1
  1418. tttt
  1419. explain extended (select * from t1);
  1420. id select_type table type possible_keys key key_len ref rows Extra
  1421. 1 SIMPLE t1 system NULL NULL NULL NULL 1
  1422. Warnings:
  1423. Note 1003 (select test.t1.s1 AS `s1` from test.t1)
  1424. (select * from t1);
  1425. s1
  1426. tttt
  1427. drop table t1;
  1428. create table t1 (s1 char(5), index s1(s1));
  1429. create table t2 (s1 char(5), index s1(s1));
  1430. insert into t1 values ('a1'),('a2'),('a3');
  1431. insert into t2 values ('a1'),('a2');
  1432. select s1, s1 NOT IN (SELECT s1 FROM t2) from t1;
  1433. s1 s1 NOT IN (SELECT s1 FROM t2)
  1434. a1 0
  1435. a2 0
  1436. a3 1
  1437. select s1, s1 = ANY (SELECT s1 FROM t2) from t1;
  1438. s1 s1 = ANY (SELECT s1 FROM t2)
  1439. a1 1
  1440. a2 1
  1441. a3 0
  1442. select s1, s1 <> ALL (SELECT s1 FROM t2) from t1;
  1443. s1 s1 <> ALL (SELECT s1 FROM t2)
  1444. a1 0
  1445. a2 0
  1446. a3 1
  1447. select s1, s1 NOT IN (SELECT s1 FROM t2 WHERE s1 < 'a2') from t1;
  1448. s1 s1 NOT IN (SELECT s1 FROM t2 WHERE s1 < 'a2')
  1449. a1 0
  1450. a2 1
  1451. a3 1
  1452. explain extended select s1, s1 NOT IN (SELECT s1 FROM t2) from t1;
  1453. id select_type table type possible_keys key key_len ref rows Extra
  1454. 1 PRIMARY t1 index NULL s1 6 NULL 3 Using index
  1455. 2 DEPENDENT SUBQUERY t2 index_subquery s1 s1 6 func 2 Using index
  1456. Warnings:
  1457. Note 1003 select test.t1.s1 AS `s1`,not(<in_optimizer>(test.t1.s1,<exists>(<index_lookup>(<cache>(test.t1.s1) in t2 on s1 chicking NULL)))) AS `s1 NOT IN (SELECT s1 FROM t2)` from test.t1
  1458. explain extended select s1, s1 = ANY (SELECT s1 FROM t2) from t1;
  1459. id select_type table type possible_keys key key_len ref rows Extra
  1460. 1 PRIMARY t1 index NULL s1 6 NULL 3 Using index
  1461. 2 DEPENDENT SUBQUERY t2 index_subquery s1 s1 6 func 2 Using index
  1462. Warnings:
  1463. Note 1003 select test.t1.s1 AS `s1`,<in_optimizer>(test.t1.s1,<exists>(<index_lookup>(<cache>(test.t1.s1) in t2 on s1 chicking NULL))) AS `s1 = ANY (SELECT s1 FROM t2)` from test.t1
  1464. explain extended select s1, s1 <> ALL (SELECT s1 FROM t2) from t1;
  1465. id select_type table type possible_keys key key_len ref rows Extra
  1466. 1 PRIMARY t1 index NULL s1 6 NULL 3 Using index
  1467. 2 DEPENDENT SUBQUERY t2 index_subquery s1 s1 6 func 2 Using index
  1468. Warnings:
  1469. Note 1003 select test.t1.s1 AS `s1`,not(<in_optimizer>(test.t1.s1,<exists>(<index_lookup>(<cache>(test.t1.s1) in t2 on s1 chicking NULL)))) AS `s1 <> ALL (SELECT s1 FROM t2)` from test.t1
  1470. explain extended select s1, s1 NOT IN (SELECT s1 FROM t2 WHERE s1 < 'a2') from t1;
  1471. id select_type table type possible_keys key key_len ref rows Extra
  1472. 1 PRIMARY t1 index NULL s1 6 NULL 3 Using index
  1473. 2 DEPENDENT SUBQUERY t2 index_subquery s1 s1 6 func 1 Using index; Using where
  1474. Warnings:
  1475. Note 1003 select test.t1.s1 AS `s1`,not(<in_optimizer>(test.t1.s1,<exists>(<index_lookup>(<cache>(test.t1.s1) in t2 on s1 chicking NULL where (test.t2.s1 < _latin1'a2'))))) AS `s1 NOT IN (SELECT s1 FROM t2 WHERE s1 < 'a2')` from test.t1
  1476. drop table t1,t2;
  1477. create table t2 (a int, b int);
  1478. create table t3 (a int);
  1479. insert into t3 values (6),(7),(3);
  1480. select * from t3 where a >= all (select b from t2);
  1481. a
  1482. 6
  1483. 7
  1484. 3
  1485. explain extended select * from t3 where a >= all (select b from t2);
  1486. id select_type table type possible_keys key key_len ref rows Extra
  1487. 1 PRIMARY t3 ALL NULL NULL NULL NULL 3 Using where
  1488. 2 SUBQUERY t2 system NULL NULL NULL NULL 0 const row not found
  1489. Warnings:
  1490. Note 1003 select test.t3.a AS `a` from test.t3 where <not>((test.t3.a < (select max(test.t2.b) from test.t2)))
  1491. select * from t3 where a >= some (select b from t2);
  1492. a
  1493. explain extended select * from t3 where a >= some (select b from t2);
  1494. id select_type table type possible_keys key key_len ref rows Extra
  1495. 1 PRIMARY t3 ALL NULL NULL NULL NULL 3 Using where
  1496. 2 SUBQUERY t2 system NULL NULL NULL NULL 0 const row not found
  1497. Warnings:
  1498. Note 1003 select test.t3.a AS `a` from test.t3 where <nop>((test.t3.a >= (select min(test.t2.b) from test.t2)))
  1499. select * from t3 where a >= all (select b from t2 group by 1);
  1500. a
  1501. 6
  1502. 7
  1503. 3
  1504. explain extended select * from t3 where a >= all (select b from t2 group by 1);
  1505. id select_type table type possible_keys key key_len ref rows Extra
  1506. 1 PRIMARY t3 ALL NULL NULL NULL NULL 3 Using where
  1507. 2 SUBQUERY t2 system NULL NULL NULL NULL 0 const row not found
  1508. Warnings:
  1509. Note 1003 select test.t3.a AS `a` from test.t3 where <not>((test.t3.a < <max>(select test.t2.b AS `b` from test.t2 group by test.t2.b)))
  1510. select * from t3 where a >= some (select b from t2 group by 1);
  1511. a
  1512. explain extended select * from t3 where a >= some (select b from t2 group by 1);
  1513. id select_type table type possible_keys key key_len ref rows Extra
  1514. 1 PRIMARY t3 ALL NULL NULL NULL NULL 3 Using where
  1515. 2 SUBQUERY t2 system NULL NULL NULL NULL 0 const row not found
  1516. Warnings:
  1517. Note 1003 select test.t3.a AS `a` from test.t3 where <nop>((test.t3.a >= <min>(select test.t2.b AS `b` from test.t2 group by test.t2.b)))
  1518. select * from t3 where NULL >= any (select b from t2);
  1519. a
  1520. explain extended select * from t3 where NULL >= any (select b from t2);
  1521. id select_type table type possible_keys key key_len ref rows Extra
  1522. 1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
  1523. 2 SUBQUERY t2 system NULL NULL NULL NULL 0 const row not found
  1524. Warnings:
  1525. Note 1003 select test.t3.a AS `a` from test.t3
  1526. select * from t3 where NULL >= any (select b from t2 group by 1);
  1527. a
  1528. explain extended select * from t3 where NULL >= any (select b from t2 group by 1);
  1529. id select_type table type possible_keys key key_len ref rows Extra
  1530. 1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
  1531. 2 SUBQUERY t2 system NULL NULL NULL NULL 0 const row not found
  1532. Warnings:
  1533. Note 1003 select test.t3.a AS `a` from test.t3
  1534. select * from t3 where NULL >= some (select b from t2);
  1535. a
  1536. explain extended select * from t3 where NULL >= some (select b from t2);
  1537. id select_type table type possible_keys key key_len ref rows Extra
  1538. 1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
  1539. 2 SUBQUERY t2 system NULL NULL NULL NULL 0 const row not found
  1540. Warnings:
  1541. Note 1003 select test.t3.a AS `a` from test.t3
  1542. select * from t3 where NULL >= some (select b from t2 group by 1);
  1543. a
  1544. explain extended select * from t3 where NULL >= some (select b from t2 group by 1);
  1545. id select_type table type possible_keys key key_len ref rows Extra
  1546. 1 PRIMARY NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
  1547. 2 SUBQUERY t2 system NULL NULL NULL NULL 0 const row not found
  1548. Warnings:
  1549. Note 1003 select test.t3.a AS `a` from test.t3
  1550. insert into t2 values (2,2), (2,1), (3,3), (3,1);
  1551. select * from t3 where a > all (select max(b) from t2 group by a);
  1552. a
  1553. 6
  1554. 7
  1555. explain extended select * from t3 where a > all (select max(b) from t2 group by a);
  1556. id select_type table type possible_keys key key_len ref rows Extra
  1557. 1 PRIMARY t3 ALL NULL NULL NULL NULL 3 Using where
  1558. 2 SUBQUERY t2 ALL NULL NULL NULL NULL 4 Using temporary; Using filesort
  1559. Warnings:
  1560. Note 1003 select test.t3.a AS `a` from test.t3 where <not>((test.t3.a <= <max>(select max(test.t2.b) AS `max(b)` from test.t2 group by test.t2.a)))
  1561. drop table t2, t3;
  1562. CREATE TABLE `t1` ( `id` mediumint(9) NOT NULL auto_increment, `taskid` bigint(20) NOT NULL default '0', `dbid` int(11) NOT NULL default '0', `create_date` datetime NOT NULL default '0000-00-00 00:00:00', `last_update` datetime NOT NULL default '0000-00-00 00:00:00', PRIMARY KEY  (`id`)) ENGINE=MyISAM CHARSET=latin1 AUTO_INCREMENT=3 ;
  1563. INSERT INTO `t1` (`id`, `taskid`, `dbid`, `create_date`,`last_update`) VALUES (1, 1, 15, '2003-09-29 10:31:36', '2003-09-29 10:31:36'), (2, 1, 21, now(), now());
  1564. CREATE TABLE `t2` (`db_id` int(11) NOT NULL auto_increment,`name` varchar(200) NOT NULL default '',`primary_uid` smallint(6) NOT NULL default '0',`secondary_uid` smallint(6) NOT NULL default '0',PRIMARY KEY  (`db_id`),UNIQUE KEY `name_2` (`name`),FULLTEXT KEY `name` (`name`)) ENGINE=MyISAM CHARSET=latin1 AUTO_INCREMENT=2147483647;
  1565. INSERT INTO `t2` (`db_id`, `name`, `primary_uid`, `secondary_uid`) VALUES (18, 'Not Set 1', 0, 0),(19, 'Valid', 1, 2),(20, 'Valid 2', 1, 2),(21, 'Should Not Return', 1, 2),(26, 'Not Set 2', 0, 0),(-1, 'ALL DB'S', 0, 0);
  1566. CREATE TABLE `t3` (`taskgenid` mediumint(9) NOT NULL auto_increment,`dbid` int(11) NOT NULL default '0',`taskid` int(11) NOT NULL default '0',`mon` tinyint(4) NOT NULL default '1',`tues` tinyint(4) NOT NULL default '1',`wed` tinyint(4) NOT NULL default '1',`thur` tinyint(4) NOT NULL default '1',`fri` tinyint(4) NOT NULL default '1',`sat` tinyint(4) NOT NULL default '0',`sun` tinyint(4) NOT NULL default '0',`how_often` smallint(6) NOT NULL default '1',`userid` smallint(6) NOT NULL default '0',`active` tinyint(4) NOT NULL default '1',PRIMARY KEY  (`taskgenid`)) ENGINE=MyISAM CHARSET=latin1 AUTO_INCREMENT=2 ;
  1567. INSERT INTO `t3` (`taskgenid`, `dbid`, `taskid`, `mon`, `tues`,`wed`, `thur`, `fri`, `sat`, `sun`, `how_often`, `userid`, `active`) VALUES (1,-1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 0, 1);
  1568. CREATE TABLE `t4` (`task_id` smallint(6) NOT NULL default '0',`description` varchar(200) NOT NULL default '') ENGINE=MyISAM CHARSET=latin1;
  1569. INSERT INTO `t4` (`task_id`, `description`) VALUES (1, 'Daily Check List'),(2, 'Weekly Status');
  1570. select  dbid, name, (date_format(now() , '%Y-%m-%d') - INTERVAL how_often DAY) >= ifnull((SELECT date_format(max(create_date),'%Y-%m-%d') FROM t1 WHERE dbid = b.db_id AND taskid = a.taskgenid), '1950-01-01') from t3 a, t2 b, t4  WHERE dbid = - 1 AND primary_uid = '1' AND t4.task_id = taskid;
  1571. dbid name (date_format(now() , '%Y-%m-%d') - INTERVAL how_often DAY) >= ifnull((SELECT date_format(max(create_date),'%Y-%m-%d') FROM t1 WHERE dbid = b.db_id AND taskid = a.taskgenid), '1950-01-01')
  1572. -1 Valid 1
  1573. -1 Valid 2 1
  1574. -1 Should Not Return 0
  1575. SELECT dbid, name FROM t3 a, t2 b, t4 WHERE dbid = - 1 AND primary_uid = '1' AND ((date_format(now() , '%Y-%m-%d') - INTERVAL how_often DAY) >= ifnull((SELECT date_format(max(create_date),'%Y-%m-%d') FROM t1 WHERE dbid = b.db_id AND taskid = a.taskgenid), '1950-01-01')) AND t4.task_id = taskid;
  1576. dbid name
  1577. -1 Valid
  1578. -1 Valid 2
  1579. drop table t1,t2,t3,t4;
  1580. CREATE TABLE t1 (id int(11) default NULL) ENGINE=MyISAM CHARSET=latin1;
  1581. INSERT INTO t1 VALUES (1),(5);
  1582. CREATE TABLE t2 (id int(11) default NULL) ENGINE=MyISAM CHARSET=latin1;
  1583. INSERT INTO t2 VALUES (2),(6);
  1584. select * from t1 where (1,2,6) in (select * from t2);
  1585. ERROR 21000: Operand should contain 3 column(s)
  1586. DROP TABLE t1,t2;
  1587. create table t1 (s1 int);
  1588. insert into t1 values (1);
  1589. insert into t1 values (2);
  1590. set sort_buffer_size = (select s1 from t1);
  1591. ERROR 21000: Subquery returns more than 1 row
  1592. do (select * from t1);
  1593. drop table t1;
  1594. create table t1 (s1 char);
  1595. insert into t1 values ('e');
  1596. select * from t1 where 'f' > any (select s1 from t1);
  1597. s1
  1598. e
  1599. select * from t1 where 'f' > any (select s1 from t1 union select s1 from t1);
  1600. s1
  1601. e
  1602. explain extended select * from t1 where 'f' > any (select s1 from t1 union select s1 from t1);
  1603. id select_type table type possible_keys key key_len ref rows Extra
  1604. 1 PRIMARY t1 system NULL NULL NULL NULL 1
  1605. 2 SUBQUERY t1 system NULL NULL NULL NULL 1
  1606. 3 UNION t1 system NULL NULL NULL NULL 1
  1607. NULL UNION RESULT <union2,3> ALL NULL NULL NULL NULL NULL
  1608. Warnings:
  1609. Note 1003 select test.t1.s1 AS `s1` from test.t1
  1610. drop table t1;
  1611. CREATE TABLE t1 (number char(11) NOT NULL default '') ENGINE=MyISAM CHARSET=latin1;
  1612. INSERT INTO t1 VALUES ('69294728265'),('18621828126'),('89356874041'),('95895001874');
  1613. CREATE TABLE t2 (code char(5) NOT NULL default '',UNIQUE KEY code (code)) ENGINE=MyISAM CHARSET=latin1;
  1614. INSERT INTO t2 VALUES ('1'),('1226'),('1245'),('1862'),('18623'),('1874'),('1967'),('6');
  1615. select c.number as phone,(select p.code from t2 p where c.number like concat(p.code, '%') order by length(p.code) desc limit 1) as code from t1 c;
  1616. phone code
  1617. 69294728265 6
  1618. 18621828126 1862
  1619. 89356874041 NULL
  1620. 95895001874 NULL
  1621. drop table t1, t2;
  1622. create table t1 (s1 int);
  1623. create table t2 (s1 int);
  1624. select * from t1 where (select count(*) from t2 where t1.s2) = 1;
  1625. ERROR 42S22: Unknown column 't1.s2' in 'where clause'
  1626. select * from t1 where (select count(*) from t2 group by t1.s2) = 1;
  1627. ERROR 42S22: Unknown column 't1.s2' in 'group statement'
  1628. select count(*) from t2 group by t1.s2;
  1629. ERROR 42S02: Unknown table 't1' in group statement
  1630. drop table t1, t2;
  1631. CREATE TABLE t1(COLA FLOAT NOT NULL,COLB FLOAT NOT NULL,COLC VARCHAR(20) DEFAULT NULL,PRIMARY KEY (COLA, COLB));
  1632. CREATE TABLE t2(COLA FLOAT NOT NULL,COLB FLOAT NOT NULL,COLC CHAR(1) NOT NULL,PRIMARY KEY (COLA));
  1633. INSERT INTO t1 VALUES (1,1,'1A3240'), (1,2,'4W2365');
  1634. INSERT INTO t2 VALUES (100, 200, 'C');
  1635. SELECT DISTINCT COLC FROM t1 WHERE COLA = (SELECT COLA FROM t2 WHERE COLB = 200 AND COLC ='C' LIMIT 1);
  1636. COLC
  1637. DROP TABLE t1, t2;
  1638. CREATE TABLE t1 (a int(1));
  1639. INSERT INTO t1 VALUES (1),(1),(1),(1),(1),(2),(3),(4),(5);
  1640. SELECT DISTINCT (SELECT a) FROM t1 LIMIT 100;
  1641. (SELECT a)
  1642. 1
  1643. 2
  1644. 3
  1645. 4
  1646. 5
  1647. DROP TABLE t1;
  1648. create table t1 (a int, b decimal(13, 3));
  1649. insert into t1 values (1, 0.123);
  1650. select a, (select max(b) from t1) into outfile "subselect.out.file.1" from t1;
  1651. delete from t1;
  1652. load data infile "subselect.out.file.1" into table t1;
  1653. select * from t1;
  1654. a b
  1655. 1 0.123
  1656. drop table t1;
  1657. CREATE TABLE `t1` (
  1658. `id` int(11) NOT NULL auto_increment,
  1659. `id_cns` tinyint(3) unsigned NOT NULL default '0',
  1660. `tipo` enum('','UNO','DUE') NOT NULL default '',
  1661. `anno_dep` smallint(4) unsigned zerofill NOT NULL default '0000',
  1662. `particolare` mediumint(8) unsigned NOT NULL default '0',
  1663. `generale` mediumint(8) unsigned NOT NULL default '0',
  1664. `bis` tinyint(3) unsigned NOT NULL default '0',
  1665. PRIMARY KEY  (`id`),
  1666. UNIQUE KEY `idx_cns_gen_anno` (`anno_dep`,`id_cns`,`generale`,`particolare`),
  1667. UNIQUE KEY `idx_cns_par_anno` (`id_cns`,`anno_dep`,`tipo`,`particolare`,`bis`)
  1668. );
  1669. INSERT INTO `t1` VALUES (1,16,'UNO',1987,2048,9681,0),(2,50,'UNO',1987,1536,13987,0),(3,16,'UNO',1987,2432,14594,0),(4,16,'UNO',1987,1792,13422,0),(5,16,'UNO',1987,1025,10240,0),(6,16,'UNO',1987,1026,7089,0);
  1670. CREATE TABLE `t2` (
  1671. `id` tinyint(3) unsigned NOT NULL auto_increment,
  1672. `max_anno_dep` smallint(6) unsigned NOT NULL default '0',
  1673. PRIMARY KEY  (`id`)
  1674. );
  1675. INSERT INTO `t2` VALUES (16,1987),(50,1990),(51,1990);
  1676. SELECT cns.id, cns.max_anno_dep, cns.max_anno_dep = (SELECT s.anno_dep FROM t1 AS s WHERE s.id_cns = cns.id ORDER BY s.anno_dep DESC LIMIT 1) AS PIPPO FROM t2 AS cns;
  1677. id max_anno_dep PIPPO
  1678. 16 1987 1
  1679. 50 1990 0
  1680. 51 1990 NULL
  1681. DROP TABLE t1, t2;
  1682. create table t1 (a int);
  1683. insert into t1 values (1), (2), (3);
  1684. SET SQL_SELECT_LIMIT=1;
  1685. select sum(a) from (select * from t1) as a;
  1686. sum(a)
  1687. 6
  1688. select 2 in (select * from t1);
  1689. 2 in (select * from t1)
  1690. 1
  1691. SET SQL_SELECT_LIMIT=default;
  1692. drop table t1;
  1693. CREATE TABLE t1 (a int, b int, INDEX (a));
  1694. INSERT INTO t1 VALUES (1, 1), (1, 2), (1, 3);
  1695. SELECT * FROM t1 WHERE a = (SELECT MAX(a) FROM t1 WHERE a = 1) ORDER BY b;
  1696. a b
  1697. 1 1
  1698. 1 2
  1699. 1 3
  1700. DROP TABLE t1;
  1701. create table t1(val varchar(10));
  1702. insert into t1 values ('aaa'), ('bbb'),('eee'),('mmm'),('ppp');
  1703. select count(*) from t1 as w1 where w1.val in (select w2.val from t1 as w2 where w2.val like 'm%') and w1.val in (select w3.val from t1 as w3 where w3.val like 'e%');
  1704. count(*)
  1705. 0
  1706. drop table t1;
  1707. create table t1 (id int not null, text varchar(20) not null default '', primary key (id));
  1708. insert into t1 (id, text) values (1, 'text1'), (2, 'text2'), (3, 'text3'), (4, 'text4'), (5, 'text5'), (6, 'text6'), (7, 'text7'), (8, 'text8'), (9, 'text9'), (10, 'text10'), (11, 'text11'), (12, 'text12');
  1709. select * from t1 where id not in (select id from t1 where id < 8);
  1710. id text
  1711. 8 text8
  1712. 9 text9
  1713. 10 text10
  1714. 11 text11
  1715. 12 text12
  1716. select * from t1 as tt where not exists (select id from t1 where id < 8 and (id = tt.id or id is null) having id is not null);
  1717. id text
  1718. 8 text8
  1719. 9 text9
  1720. 10 text10
  1721. 11 text11
  1722. 12 text12
  1723. explain extended select * from t1 where id not in (select id from t1 where id < 8);
  1724. id select_type table type possible_keys key key_len ref rows Extra
  1725. 1 PRIMARY t1 ALL NULL NULL NULL NULL 12 Using where
  1726. 2 DEPENDENT SUBQUERY t1 unique_subquery PRIMARY PRIMARY 4 func 1 Using index; Using where
  1727. Warnings:
  1728. Note 1003 select test.t1.id AS `id`,test.t1.text AS `text` from test.t1 where not(<in_optimizer>(test.t1.id,<exists>(<primary_index_lookup>(<cache>(test.t1.id) in t1 on PRIMARY where (test.t1.id < 8)))))
  1729. explain extended select * from t1 as tt where not exists (select id from t1 where id < 8 and (id = tt.id or id is null) having id is not null);
  1730. id select_type table type possible_keys key key_len ref rows Extra
  1731. 1 PRIMARY tt ALL NULL NULL NULL NULL 12 Using where
  1732. 2 DEPENDENT SUBQUERY t1 eq_ref PRIMARY PRIMARY 4 test.tt.id 7 Using where; Using index
  1733. Warnings:
  1734. Note 1276 Field or reference 'tt.id' of SELECT #2 was resolved in SELECT #1
  1735. Note 1003 select test.tt.id AS `id`,test.tt.text AS `text` from test.t1 tt where not(exists(select test.t1.id AS `id` from test.t1 where ((test.t1.id < 8) and ((test.t1.id = test.tt.id) or isnull(test.t1.id))) having (test.t1.id is not null)))
  1736. insert into t1 (id, text) values (1000, 'text1000'), (1001, 'text1001');
  1737. create table t2 (id int not null, text varchar(20) not null default '', primary key (id));
  1738. insert into t2 (id, text) values (1, 'text1'), (2, 'text2'), (3, 'text3'), (4, 'text4'), (5, 'text5'), (6, 'text6'), (7, 'text7'), (8, 'text8'), (9, 'text9'), (10, 'text10'), (11, 'text1'), (12, 'text2'), (13, 'text3'), (14, 'text4'), (15, 'text5'), (16, 'text6'), (17, 'text7'), (18, 'text8'), (19, 'text9'), (20, 'text10'),(21, 'text1'), (22, 'text2'), (23, 'text3'), (24, 'text4'), (25, 'text5'), (26, 'text6'), (27, 'text7'), (28, 'text8'), (29, 'text9'), (30, 'text10'), (31, 'text1'), (32, 'text2'), (33, 'text3'), (34, 'text4'), (35, 'text5'), (36, 'text6'), (37, 'text7'), (38, 'text8'), (39, 'text9'), (40, 'text10'), (41, 'text1'), (42, 'text2'), (43, 'text3'), (44, 'text4'), (45, 'text5'), (46, 'text6'), (47, 'text7'), (48, 'text8'), (49, 'text9'), (50, 'text10');
  1739. select * from t1 a left join t2 b on (a.id=b.id or b.id is null) join t1 c on (if(isnull(b.id), 1000, b.id)=c.id);
  1740. id text id text id text
  1741. 1 text1 1 text1 1 text1
  1742. 2 text2 2 text2 2 text2
  1743. 3 text3 3 text3 3 text3
  1744. 4 text4 4 text4 4 text4
  1745. 5 text5 5 text5 5 text5
  1746. 6 text6 6 text6 6 text6
  1747. 7 text7 7 text7 7 text7
  1748. 8 text8 8 text8 8 text8
  1749. 9 text9 9 text9 9 text9
  1750. 10 text10 10 text10 10 text10
  1751. 11 text11 11 text1 11 text11
  1752. 12 text12 12 text2 12 text12
  1753. 1000 text1000 NULL NULL 1000 text1000
  1754. 1001 text1001 NULL NULL 1000 text1000
  1755. explain extended select * from t1 a left join t2 b on (a.id=b.id or b.id is null) join t1 c on (if(isnull(b.id), 1000, b.id)=c.id);
  1756. id select_type table type possible_keys key key_len ref rows Extra
  1757. 1 SIMPLE a ALL NULL NULL NULL NULL 14
  1758. 1 SIMPLE b eq_ref PRIMARY PRIMARY 4 test.a.id 2
  1759. 1 SIMPLE c eq_ref PRIMARY PRIMARY 4 func 1 Using where
  1760. Warnings:
  1761. Note 1003 select test.a.id AS `id`,test.a.text AS `text`,test.b.id AS `id`,test.b.text AS `text`,test.c.id AS `id`,test.c.text AS `text` from test.t1 a left join test.t2 b on(((test.a.id = test.b.id) or isnull(test.b.id))) join test.t1 c where (if(isnull(test.b.id),1000,test.b.id) = test.c.id)
  1762. drop table t1,t2;
  1763. create table t1 (a int);
  1764. insert into t1 values (1);
  1765. explain select benchmark(1000, (select a from t1 where a=sha(rand())));
  1766. id select_type table type possible_keys key key_len ref rows Extra
  1767. 1 PRIMARY NULL NULL NULL NULL NULL NULL NULL No tables used
  1768. 2 UNCACHEABLE SUBQUERY t1 system NULL NULL NULL NULL 1
  1769. drop table t1;
  1770. create table t1(id int);
  1771. create table t2(id int);
  1772. create table t3(flag int);
  1773. select (select * from t3 where id not null) from t1, t2;
  1774. 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 near 'null) from t1, t2' at line 1
  1775. drop table t1,t2,t3;
  1776. CREATE TABLE t1 (id INT);
  1777. CREATE TABLE t2 (id INT);
  1778. INSERT INTO t1 VALUES (1), (2);
  1779. INSERT INTO t2 VALUES (1);
  1780. SELECT t1.id, ( SELECT COUNT(t.id) FROM t2 AS t WHERE t.id = t1.id ) AS c FROM t1 LEFT JOIN t2 USING (id);
  1781. id c
  1782. 1 1
  1783. 2 0
  1784. SELECT t1.id, ( SELECT COUNT(t.id) FROM t2 AS t WHERE t.id = t1.id ) AS c FROM t1 LEFT JOIN t2 USING (id) ORDER BY t1.id;
  1785. id c
  1786. 1 1
  1787. 2 0
  1788. DROP TABLE t1,t2;
  1789. CREATE TABLE t1 ( a int, b int );
  1790. INSERT INTO t1 VALUES (1,1),(2,2),(3,3);
  1791. SELECT a FROM t1 WHERE a > ANY ( SELECT a FROM t1 WHERE b = 2 );
  1792. a
  1793. 3
  1794. SELECT a FROM t1 WHERE a < ANY ( SELECT a FROM t1 WHERE b = 2 );
  1795. a
  1796. 1
  1797. SELECT a FROM t1 WHERE a = ANY ( SELECT a FROM t1 WHERE b = 2 );
  1798. a
  1799. 2
  1800. SELECT a FROM t1 WHERE a >= ANY ( SELECT a FROM t1 WHERE b = 2 );
  1801. a
  1802. 2
  1803. 3
  1804. SELECT a FROM t1 WHERE a <= ANY ( SELECT a FROM t1 WHERE b = 2 );
  1805. a
  1806. 1
  1807. 2
  1808. SELECT a FROM t1 WHERE a <> ANY ( SELECT a FROM t1 WHERE b = 2 );
  1809. a
  1810. 1
  1811. 3
  1812. SELECT a FROM t1 WHERE a > ALL ( SELECT a FROM t1 WHERE b = 2 );
  1813. a
  1814. 3
  1815. SELECT a FROM t1 WHERE a < ALL ( SELECT a FROM t1 WHERE b = 2 );
  1816. a
  1817. 1
  1818. SELECT a FROM t1 WHERE a = ALL ( SELECT a FROM t1 WHERE b = 2 );
  1819. a
  1820. 2
  1821. SELECT a FROM t1 WHERE a >= ALL ( SELECT a FROM t1 WHERE b = 2 );
  1822. a
  1823. 2
  1824. 3
  1825. SELECT a FROM t1 WHERE a <= ALL ( SELECT a FROM t1 WHERE b = 2 );
  1826. a
  1827. 1
  1828. 2
  1829. SELECT a FROM t1 WHERE a <> ALL ( SELECT a FROM t1 WHERE b = 2 );
  1830. a
  1831. 1
  1832. 3
  1833. ALTER TABLE t1 ADD INDEX (a);
  1834. SELECT a FROM t1 WHERE a > ANY ( SELECT a FROM t1 WHERE b = 2 );
  1835. a
  1836. 3
  1837. SELECT a FROM t1 WHERE a < ANY ( SELECT a FROM t1 WHERE b = 2 );
  1838. a
  1839. 1
  1840. SELECT a FROM t1 WHERE a = ANY ( SELECT a FROM t1 WHERE b = 2 );
  1841. a
  1842. 2
  1843. SELECT a FROM t1 WHERE a >= ANY ( SELECT a FROM t1 WHERE b = 2 );
  1844. a
  1845. 2
  1846. 3
  1847. SELECT a FROM t1 WHERE a <= ANY ( SELECT a FROM t1 WHERE b = 2 );
  1848. a
  1849. 1
  1850. 2
  1851. SELECT a FROM t1 WHERE a <> ANY ( SELECT a FROM t1 WHERE b = 2 );
  1852. a
  1853. 1
  1854. 3
  1855. SELECT a FROM t1 WHERE a > ALL ( SELECT a FROM t1 WHERE b = 2 );
  1856. a
  1857. 3
  1858. SELECT a FROM t1 WHERE a < ALL ( SELECT a FROM t1 WHERE b = 2 );
  1859. a
  1860. 1
  1861. SELECT a FROM t1 WHERE a = ALL ( SELECT a FROM t1 WHERE b = 2 );
  1862. a
  1863. 2
  1864. SELECT a FROM t1 WHERE a >= ALL ( SELECT a FROM t1 WHERE b = 2 );
  1865. a
  1866. 2
  1867. 3
  1868. SELECT a FROM t1 WHERE a <= ALL ( SELECT a FROM t1 WHERE b = 2 );
  1869. a
  1870. 1
  1871. 2
  1872. SELECT a FROM t1 WHERE a <> ALL ( SELECT a FROM t1 WHERE b = 2 );
  1873. a
  1874. 1
  1875. 3
  1876. SELECT a FROM t1 WHERE a > ANY (SELECT a FROM t1 HAVING a = 2);
  1877. a
  1878. 3
  1879. SELECT a FROM t1 WHERE a < ANY (SELECT a FROM t1 HAVING a = 2);
  1880. a
  1881. 1
  1882. SELECT a FROM t1 WHERE a = ANY (SELECT a FROM t1 HAVING a = 2);
  1883. a
  1884. 2
  1885. SELECT a FROM t1 WHERE a >= ANY (SELECT a FROM t1 HAVING a = 2);
  1886. a
  1887. 2
  1888. 3
  1889. SELECT a FROM t1 WHERE a <= ANY (SELECT a FROM t1 HAVING a = 2);
  1890. a
  1891. 1
  1892. 2
  1893. SELECT a FROM t1 WHERE a <> ANY (SELECT a FROM t1 HAVING a = 2);
  1894. a
  1895. 1
  1896. 3
  1897. SELECT a FROM t1 WHERE a > ALL (SELECT a FROM t1 HAVING a = 2);
  1898. a
  1899. 3
  1900. SELECT a FROM t1 WHERE a < ALL (SELECT a FROM t1 HAVING a = 2);
  1901. a
  1902. 1
  1903. SELECT a FROM t1 WHERE a = ALL (SELECT a FROM t1 HAVING a = 2);
  1904. a
  1905. 2
  1906. SELECT a FROM t1 WHERE a >= ALL (SELECT a FROM t1 HAVING a = 2);
  1907. a
  1908. 2
  1909. 3
  1910. SELECT a FROM t1 WHERE a <= ALL (SELECT a FROM t1 HAVING a = 2);
  1911. a
  1912. 1
  1913. 2
  1914. SELECT a FROM t1 WHERE a <> ALL (SELECT a FROM t1 HAVING a = 2);
  1915. a
  1916. 1
  1917. 3
  1918. SELECT a FROM t1 WHERE a > ANY (SELECT a FROM t1 WHERE b = 2 UNION SELECT a FROM t1 WHERE b = 2);
  1919. a
  1920. 3
  1921. SELECT a FROM t1 WHERE a < ANY (SELECT a FROM t1 WHERE b = 2 UNION SELECT a FROM t1 WHERE b = 2);
  1922. a
  1923. 1
  1924. SELECT a FROM t1 WHERE a = ANY (SELECT a FROM t1 WHERE b = 2 UNION SELECT a FROM t1 WHERE b = 2);
  1925. a
  1926. 2
  1927. SELECT a FROM t1 WHERE a >= ANY (SELECT a FROM t1 WHERE b = 2 UNION SELECT a FROM t1 WHERE b = 2);
  1928. a
  1929. 2
  1930. 3
  1931. SELECT a FROM t1 WHERE a <= ANY (SELECT a FROM t1 WHERE b = 2 UNION SELECT a FROM t1 WHERE b = 2);
  1932. a
  1933. 1
  1934. 2
  1935. SELECT a FROM t1 WHERE a <> ANY (SELECT a FROM t1 WHERE b = 2 UNION SELECT a FROM t1 WHERE b = 2);
  1936. a
  1937. 1
  1938. 3
  1939. SELECT a FROM t1 WHERE a > ALL (SELECT a FROM t1 WHERE b = 2 UNION SELECT a FROM t1 WHERE b = 2);
  1940. a
  1941. 3
  1942. SELECT a FROM t1 WHERE a < ALL (SELECT a FROM t1 WHERE b = 2 UNION SELECT a FROM t1 WHERE b = 2);
  1943. a
  1944. 1
  1945. SELECT a FROM t1 WHERE a = ALL (SELECT a FROM t1 WHERE b = 2 UNION SELECT a FROM t1 WHERE b = 2);
  1946. a
  1947. 2
  1948. SELECT a FROM t1 WHERE a >= ALL (SELECT a FROM t1 WHERE b = 2 UNION SELECT a FROM t1 WHERE b = 2);
  1949. a
  1950. 2
  1951. 3
  1952. SELECT a FROM t1 WHERE a <= ALL (SELECT a FROM t1 WHERE b = 2 UNION SELECT a FROM t1 WHERE b = 2);
  1953. a
  1954. 1
  1955. 2
  1956. SELECT a FROM t1 WHERE a <> ALL (SELECT a FROM t1 WHERE b = 2 UNION SELECT a FROM t1 WHERE b = 2);
  1957. a
  1958. 1
  1959. 3
  1960. SELECT a FROM t1 WHERE a > ANY (SELECT a FROM t1 HAVING a = 2 UNION SELECT a FROM t1 HAVING a = 2);
  1961. a
  1962. 3
  1963. SELECT a FROM t1 WHERE a < ANY (SELECT a FROM t1 HAVING a = 2 UNION SELECT a FROM t1 HAVING a = 2);
  1964. a
  1965. 1
  1966. SELECT a FROM t1 WHERE a = ANY (SELECT a FROM t1 HAVING a = 2 UNION SELECT a FROM t1 HAVING a = 2);
  1967. a
  1968. 2
  1969. SELECT a FROM t1 WHERE a >= ANY (SELECT a FROM t1 HAVING a = 2 UNION SELECT a FROM t1 HAVING a = 2);
  1970. a
  1971. 2
  1972. 3
  1973. SELECT a FROM t1 WHERE a <= ANY (SELECT a FROM t1 HAVING a = 2 UNION SELECT a FROM t1 HAVING a = 2);
  1974. a
  1975. 1
  1976. 2
  1977. SELECT a FROM t1 WHERE a <> ANY (SELECT a FROM t1 HAVING a = 2 UNION SELECT a FROM t1 HAVING a = 2);
  1978. a
  1979. 1
  1980. 3
  1981. SELECT a FROM t1 WHERE a > ALL (SELECT a FROM t1 HAVING a = 2 UNION SELECT a FROM t1 HAVING a = 2);
  1982. a
  1983. 3
  1984. SELECT a FROM t1 WHERE a < ALL (SELECT a FROM t1 HAVING a = 2 UNION SELECT a FROM t1 HAVING a = 2);
  1985. a
  1986. 1
  1987. SELECT a FROM t1 WHERE a = ALL (SELECT a FROM t1 HAVING a = 2 UNION SELECT a FROM t1 HAVING a = 2);
  1988. a
  1989. 2
  1990. SELECT a FROM t1 WHERE a >= ALL (SELECT a FROM t1 HAVING a = 2 UNION SELECT a FROM t1 HAVING a = 2);
  1991. a
  1992. 2
  1993. 3
  1994. SELECT a FROM t1 WHERE a <= ALL (SELECT a FROM t1 HAVING a = 2 UNION SELECT a FROM t1 HAVING a = 2);
  1995. a
  1996. 1
  1997. 2
  1998. SELECT a FROM t1 WHERE a <> ALL (SELECT a FROM t1 HAVING a = 2 UNION SELECT a FROM t1 HAVING a = 2);
  1999. a
  2000. 1
  2001. 3
  2002. SELECT a FROM t1 WHERE (1,2) > ANY (SELECT a FROM t1 WHERE b = 2);
  2003. ERROR 21000: Operand should contain 1 column(s)
  2004. SELECT a FROM t1 WHERE a > ANY (SELECT a,2 FROM t1 WHERE b = 2);
  2005. ERROR 21000: Operand should contain 1 column(s)
  2006. SELECT a FROM t1 WHERE (1,2) > ANY (SELECT a,2 FROM t1 WHERE b = 2);
  2007. ERROR 21000: Operand should contain 1 column(s)
  2008. SELECT a FROM t1 WHERE (1,2) > ALL (SELECT a FROM t1 WHERE b = 2);
  2009. ERROR 21000: Operand should contain 1 column(s)
  2010. SELECT a FROM t1 WHERE a > ALL (SELECT a,2 FROM t1 WHERE b = 2);
  2011. ERROR 21000: Operand should contain 1 column(s)
  2012. SELECT a FROM t1 WHERE (1,2) > ALL (SELECT a,2 FROM t1 WHERE b = 2);
  2013. ERROR 21000: Operand should contain 1 column(s)
  2014. SELECT a FROM t1 WHERE (1,2) = ALL (SELECT a,2 FROM t1 WHERE b = 2);
  2015. ERROR 21000: Operand should contain 1 column(s)
  2016. SELECT a FROM t1 WHERE (1,2) <> ANY (SELECT a,2 FROM t1 WHERE b = 2);
  2017. ERROR 21000: Operand should contain 1 column(s)
  2018. SELECT a FROM t1 WHERE (1,2) = ANY (SELECT a FROM t1 WHERE b = 2);
  2019. ERROR 21000: Operand should contain 2 column(s)
  2020. SELECT a FROM t1 WHERE a = ANY (SELECT a,2 FROM t1 WHERE b = 2);
  2021. ERROR 21000: Operand should contain 1 column(s)
  2022. SELECT a FROM t1 WHERE (1,2) = ANY (SELECT a,2 FROM t1 WHERE b = 2);
  2023. a
  2024. SELECT a FROM t1 WHERE (1,2) <> ALL (SELECT a FROM t1 WHERE b = 2);
  2025. ERROR 21000: Operand should contain 2 column(s)
  2026. SELECT a FROM t1 WHERE a <> ALL (SELECT a,2 FROM t1 WHERE b = 2);
  2027. ERROR 21000: Operand should contain 1 column(s)
  2028. SELECT a FROM t1 WHERE (1,2) <> ALL (SELECT a,2 FROM t1 WHERE b = 2);
  2029. a
  2030. 1
  2031. 2
  2032. 3
  2033. SELECT a FROM t1 WHERE (a,1) = ANY (SELECT a,1 FROM t1 WHERE b = 2);
  2034. a
  2035. 2
  2036. SELECT a FROM t1 WHERE (a,1) <> ALL (SELECT a,1 FROM t1 WHERE b = 2);
  2037. a
  2038. 1
  2039. 3
  2040. SELECT a FROM t1 WHERE (a,1) = ANY (SELECT a,1 FROM t1 HAVING a = 2);
  2041. a
  2042. 2
  2043. SELECT a FROM t1 WHERE (a,1) <> ALL (SELECT a,1 FROM t1 HAVING a = 2);
  2044. a
  2045. 1
  2046. 3
  2047. SELECT a FROM t1 WHERE (a,1) = ANY (SELECT a,1 FROM t1 WHERE b = 2 UNION SELECT a,1 FROM t1 WHERE b = 2);
  2048. a
  2049. 2
  2050. SELECT a FROM t1 WHERE (a,1) <> ALL (SELECT a,1 FROM t1 WHERE b = 2 UNION SELECT a,1 FROM t1 WHERE b = 2);
  2051. a
  2052. 1
  2053. 3
  2054. SELECT a FROM t1 WHERE (a,1) = ANY (SELECT a,1 FROM t1 HAVING a = 2 UNION SELECT a,1 FROM t1 HAVING a = 2);
  2055. a
  2056. 2
  2057. SELECT a FROM t1 WHERE (a,1) <> ALL (SELECT a,1 FROM t1 HAVING a = 2 UNION SELECT a,1 FROM t1 HAVING a = 2);
  2058. a
  2059. 1
  2060. 3
  2061. SELECT a FROM t1 WHERE a > ANY (SELECT a FROM t1 WHERE b = 2 group by a);
  2062. a
  2063. 3
  2064. SELECT a FROM t1 WHERE a < ANY (SELECT a FROM t1 WHERE b = 2 group by a);
  2065. a
  2066. 1
  2067. SELECT a FROM t1 WHERE a = ANY (SELECT a FROM t1 WHERE b = 2 group by a);
  2068. a
  2069. 2
  2070. SELECT a FROM t1 WHERE a >= ANY (SELECT a FROM t1 WHERE b = 2 group by a);
  2071. a
  2072. 2
  2073. 3
  2074. SELECT a FROM t1 WHERE a <= ANY (SELECT a FROM t1 WHERE b = 2 group by a);
  2075. a
  2076. 1
  2077. 2
  2078. SELECT a FROM t1 WHERE a <> ANY (SELECT a FROM t1 WHERE b = 2 group by a);
  2079. a
  2080. 1
  2081. 3
  2082. SELECT a FROM t1 WHERE a > ALL (SELECT a FROM t1 WHERE b = 2 group by a);
  2083. a
  2084. 3
  2085. SELECT a FROM t1 WHERE a < ALL (SELECT a FROM t1 WHERE b = 2 group by a);
  2086. a
  2087. 1
  2088. SELECT a FROM t1 WHERE a = ALL (SELECT a FROM t1 WHERE b = 2 group by a);
  2089. a
  2090. 2
  2091. SELECT a FROM t1 WHERE a >= ALL (SELECT a FROM t1 WHERE b = 2 group by a);
  2092. a
  2093. 2
  2094. 3
  2095. SELECT a FROM t1 WHERE a <= ALL (SELECT a FROM t1 WHERE b = 2 group by a);
  2096. a
  2097. 1
  2098. 2
  2099. SELECT a FROM t1 WHERE a <> ALL (SELECT a FROM t1 WHERE b = 2 group by a);
  2100. a
  2101. 1
  2102. 3
  2103. SELECT a FROM t1 WHERE a > ANY (SELECT a FROM t1 group by a HAVING a = 2);
  2104. a
  2105. 3
  2106. SELECT a FROM t1 WHERE a < ANY (SELECT a FROM t1 group by a HAVING a = 2);
  2107. a
  2108. 1
  2109. SELECT a FROM t1 WHERE a = ANY (SELECT a FROM t1 group by a HAVING a = 2);
  2110. a
  2111. 2
  2112. SELECT a FROM t1 WHERE a >= ANY (SELECT a FROM t1 group by a HAVING a = 2);
  2113. a
  2114. 2
  2115. 3
  2116. SELECT a FROM t1 WHERE a <= ANY (SELECT a FROM t1 group by a HAVING a = 2);
  2117. a
  2118. 1
  2119. 2
  2120. SELECT a FROM t1 WHERE a <> ANY (SELECT a FROM t1 group by a HAVING a = 2);
  2121. a
  2122. 1
  2123. 3
  2124. SELECT a FROM t1 WHERE a > ALL (SELECT a FROM t1 group by a HAVING a = 2);
  2125. a
  2126. 3
  2127. SELECT a FROM t1 WHERE a < ALL (SELECT a FROM t1 group by a HAVING a = 2);
  2128. a
  2129. 1
  2130. SELECT a FROM t1 WHERE a = ALL (SELECT a FROM t1 group by a HAVING a = 2);
  2131. a
  2132. 2
  2133. SELECT a FROM t1 WHERE a >= ALL (SELECT a FROM t1 group by a HAVING a = 2);
  2134. a
  2135. 2
  2136. 3
  2137. SELECT a FROM t1 WHERE a <= ALL (SELECT a FROM t1 group by a HAVING a = 2);
  2138. a
  2139. 1
  2140. 2
  2141. SELECT a FROM t1 WHERE a <> ALL (SELECT a FROM t1 group by a HAVING a = 2);
  2142. a
  2143. 1
  2144. 3
  2145. SELECT concat(EXISTS(SELECT a FROM t1 WHERE b = 2 and a.a > t1.a), '-') from t1 a;
  2146. concat(EXISTS(SELECT a FROM t1 WHERE b = 2 and a.a > t1.a), '-')
  2147. 0-
  2148. 0-
  2149. 1-
  2150. SELECT concat(EXISTS(SELECT a FROM t1 WHERE b = 2 and a.a < t1.a), '-') from t1 a;
  2151. concat(EXISTS(SELECT a FROM t1 WHERE b = 2 and a.a < t1.a), '-')
  2152. 1-
  2153. 0-
  2154. 0-
  2155. SELECT concat(EXISTS(SELECT a FROM t1 WHERE b = 2 and a.a = t1.a), '-') from t1 a;
  2156. concat(EXISTS(SELECT a FROM t1 WHERE b = 2 and a.a = t1.a), '-')
  2157. 0-
  2158. 1-
  2159. 0-
  2160. DROP TABLE t1;
  2161. CREATE TABLE t1 ( a double, b double );
  2162. INSERT INTO t1 VALUES (1,1),(2,2),(3,3);
  2163. SELECT a FROM t1 WHERE a > ANY (SELECT a FROM t1 WHERE b = 2e0);
  2164. a
  2165. 3
  2166. SELECT a FROM t1 WHERE a < ANY (SELECT a FROM t1 WHERE b = 2e0);
  2167. a
  2168. 1
  2169. SELECT a FROM t1 WHERE a = ANY (SELECT a FROM t1 WHERE b = 2e0);
  2170. a
  2171. 2
  2172. SELECT a FROM t1 WHERE a >= ANY (SELECT a FROM t1 WHERE b = 2e0);
  2173. a
  2174. 2
  2175. 3
  2176. SELECT a FROM t1 WHERE a <= ANY (SELECT a FROM t1 WHERE b = 2e0);
  2177. a
  2178. 1
  2179. 2
  2180. SELECT a FROM t1 WHERE a <> ANY (SELECT a FROM t1 WHERE b = 2e0);
  2181. a
  2182. 1
  2183. 3
  2184. SELECT a FROM t1 WHERE a > ALL (SELECT a FROM t1 WHERE b = 2e0);
  2185. a
  2186. 3
  2187. SELECT a FROM t1 WHERE a < ALL (SELECT a FROM t1 WHERE b = 2e0);
  2188. a
  2189. 1
  2190. SELECT a FROM t1 WHERE a = ALL (SELECT a FROM t1 WHERE b = 2e0);
  2191. a
  2192. 2
  2193. SELECT a FROM t1 WHERE a >= ALL (SELECT a FROM t1 WHERE b = 2e0);
  2194. a
  2195. 2
  2196. 3
  2197. SELECT a FROM t1 WHERE a <= ALL (SELECT a FROM t1 WHERE b = 2e0);
  2198. a
  2199. 1
  2200. 2
  2201. SELECT a FROM t1 WHERE a <> ALL (SELECT a FROM t1 WHERE b = 2e0);
  2202. a
  2203. 1
  2204. 3
  2205. DROP TABLE t1;
  2206. CREATE TABLE t1 ( a char(1), b char(1));
  2207. INSERT INTO t1 VALUES ('1','1'),('2','2'),('3','3');
  2208. SELECT a FROM t1 WHERE a > ANY (SELECT a FROM t1 WHERE b = '2');
  2209. a
  2210. 3
  2211. SELECT a FROM t1 WHERE a < ANY (SELECT a FROM t1 WHERE b = '2');
  2212. a
  2213. 1
  2214. SELECT a FROM t1 WHERE a = ANY (SELECT a FROM t1 WHERE b = '2');
  2215. a
  2216. 2
  2217. SELECT a FROM t1 WHERE a >= ANY (SELECT a FROM t1 WHERE b = '2');
  2218. a
  2219. 2
  2220. 3
  2221. SELECT a FROM t1 WHERE a <= ANY (SELECT a FROM t1 WHERE b = '2');
  2222. a
  2223. 1
  2224. 2
  2225. SELECT a FROM t1 WHERE a <> ANY (SELECT a FROM t1 WHERE b = '2');
  2226. a
  2227. 1
  2228. 3
  2229. SELECT a FROM t1 WHERE a > ALL (SELECT a FROM t1 WHERE b = '2');
  2230. a
  2231. 3
  2232. SELECT a FROM t1 WHERE a < ALL (SELECT a FROM t1 WHERE b = '2');
  2233. a
  2234. 1
  2235. SELECT a FROM t1 WHERE a = ALL (SELECT a FROM t1 WHERE b = '2');
  2236. a
  2237. 2
  2238. SELECT a FROM t1 WHERE a >= ALL (SELECT a FROM t1 WHERE b = '2');
  2239. a
  2240. 2
  2241. 3
  2242. SELECT a FROM t1 WHERE a <= ALL (SELECT a FROM t1 WHERE b = '2');
  2243. a
  2244. 1
  2245. 2
  2246. SELECT a FROM t1 WHERE a <> ALL (SELECT a FROM t1 WHERE b = '2');
  2247. a
  2248. 1
  2249. 3
  2250. DROP TABLE t1;
  2251. create table t1 (a int, b int);
  2252. insert into t1 values (1,2),(3,4);
  2253. select * from t1 up where exists (select * from t1 where t1.a=up.a);
  2254. a b
  2255. 1 2
  2256. 3 4
  2257. explain extended select * from t1 up where exists (select * from t1 where t1.a=up.a);
  2258. id select_type table type possible_keys key key_len ref rows Extra
  2259. 1 PRIMARY up ALL NULL NULL NULL NULL 2 Using where
  2260. 2 DEPENDENT SUBQUERY t1 ALL NULL NULL NULL NULL 2 Using where
  2261. Warnings:
  2262. Note 1276 Field or reference 'up.a' of SELECT #2 was resolved in SELECT #1
  2263. Note 1003 select test.up.a AS `a`,test.up.b AS `b` from test.t1 up where exists(select 1 AS `Not_used` from test.t1 where (test.t1.a = test.up.a))
  2264. drop table t1;
  2265. CREATE TABLE t1 (t1_a int);
  2266. INSERT INTO t1 VALUES (1);
  2267. CREATE TABLE t2 (t2_a int, t2_b int, PRIMARY KEY (t2_a, t2_b));
  2268. INSERT INTO t2 VALUES (1, 1), (1, 2);
  2269. SELECT * FROM t1, t2 table2 WHERE t1_a = 1 AND table2.t2_a = 1
  2270. HAVING table2.t2_b = (SELECT MAX(t2_b) FROM t2 WHERE t2_a = table2.t2_a);
  2271. t1_a t2_a t2_b
  2272. 1 1 2
  2273. DROP TABLE t1, t2;
  2274. CREATE TABLE t1 (id int(11) default NULL,name varchar(10) default NULL);
  2275. INSERT INTO t1 VALUES (1,'Tim'),(2,'Rebecca'),(3,NULL);
  2276. CREATE TABLE t2 (id int(11) default NULL, pet varchar(10) default NULL);
  2277. INSERT INTO t2 VALUES (1,'Fido'),(2,'Spot'),(3,'Felix');
  2278. SELECT a.*, b.* FROM (SELECT * FROM t1) AS a JOIN t2 as b on a.id=b.id;
  2279. id name id pet
  2280. 1 Tim 1 Fido
  2281. 2 Rebecca 2 Spot
  2282. 3 NULL 3 Felix
  2283. drop table t1,t2;
  2284. CREATE TABLE t1 ( a int, b int );
  2285. CREATE TABLE t2 ( c int, d int );
  2286. INSERT INTO t1 VALUES (1,2), (2,3), (3,4);
  2287. SELECT a AS abc, b FROM t1 WHERE b = (SELECT MIN(b) FROM t1 WHERE a=abc);
  2288. abc b
  2289. 1 2
  2290. 2 3
  2291. 3 4
  2292. INSERT INTO t2 SELECT a AS abc, b FROM t1 WHERE b = (SELECT MIN(b) FROM t1 WHERE a=abc);
  2293. select * from t2;
  2294. c d
  2295. 1 2
  2296. 2 3
  2297. 3 4
  2298. CREATE TABLE t3 SELECT a AS abc, b FROM t1 WHERE b = (SELECT MIN(b) FROM t1 WHERE a=abc);
  2299. select * from t3;
  2300. abc b
  2301. 1 2
  2302. 2 3
  2303. 3 4
  2304. prepare stmt1 from "INSERT INTO t2 SELECT a AS abc, b FROM t1 WHERE b = (SELECT MIN(b) FROM t1 WHERE a=abc);";
  2305. execute stmt1;
  2306. deallocate prepare stmt1;
  2307. select * from t2;
  2308. c d
  2309. 1 2
  2310. 2 3
  2311. 3 4
  2312. 1 2
  2313. 2 3
  2314. 3 4
  2315. drop table t3;
  2316. prepare stmt1 from "CREATE TABLE t3 SELECT a AS abc, b FROM t1 WHERE b = (SELECT MIN(b) FROM t1 WHERE a=abc);";
  2317. execute stmt1;
  2318. select * from t3;
  2319. abc b
  2320. 1 2
  2321. 2 3
  2322. 3 4
  2323. deallocate prepare stmt1;
  2324. DROP TABLE t1, t2, t3;
  2325. CREATE TABLE `t1` ( `a` int(11) default NULL) ENGINE=MyISAM DEFAULT CHARSET=latin1;
  2326. insert into t1 values (1);
  2327. CREATE TABLE `t2` ( `b` int(11) default NULL, `a` int(11) default NULL) ENGINE=MyISAM DEFAULT CHARSET=latin1;
  2328. insert into t2 values (1,2);
  2329. select t000.a, count(*) `C` FROM t1 t000 GROUP BY t000.a HAVING count(*) > ALL (SELECT count(*) FROM t2 t001 WHERE t001.a=1);
  2330. a C
  2331. 1 1
  2332. drop table t1,t2;
  2333. create table t1 (a int not null auto_increment primary key, b varchar(40), fulltext(b));
  2334. insert into t1 (b) values ('ball'),('ball games'), ('games'), ('foo'), ('foobar'), ('Serg'), ('Sergei'),('Georg'), ('Patrik'),('Hakan');
  2335. create table t2 (a int);
  2336. insert into t2 values (1),(3),(2),(7);
  2337. select a,b from t1 where match(b) against ('Ball') > 0;
  2338. a b
  2339. 1 ball
  2340. 2 ball games
  2341. select a from t2 where a in (select a from t1 where match(b) against ('Ball') > 0);
  2342. a
  2343. 1
  2344. 2
  2345. drop table t1,t2;
  2346. CREATE TABLE t1(`IZAVORGANG_ID` VARCHAR(11) CHARACTER SET latin1 COLLATE latin1_bin,`KUERZEL` VARCHAR(10) CHARACTER SET latin1 COLLATE latin1_bin,`IZAANALYSEART_ID` VARCHAR(11) CHARACTER SET latin1 COLLATE latin1_bin,`IZAPMKZ_ID` VARCHAR(11) CHARACTER SET latin1 COLLATE latin1_bin);
  2347. CREATE INDEX AK01IZAVORGANG ON t1(izaAnalyseart_id,Kuerzel);
  2348. INSERT INTO t1(`IZAVORGANG_ID`,`KUERZEL`,`IZAANALYSEART_ID`,`IZAPMKZ_ID`)VALUES('D0000000001','601','D0000000001','I0000000001');
  2349. INSERT INTO t1(`IZAVORGANG_ID`,`KUERZEL`,`IZAANALYSEART_ID`,`IZAPMKZ_ID`)VALUES('D0000000002','602','D0000000001','I0000000001');
  2350. INSERT INTO t1(`IZAVORGANG_ID`,`KUERZEL`,`IZAANALYSEART_ID`,`IZAPMKZ_ID`)VALUES('D0000000003','603','D0000000001','I0000000001');
  2351. INSERT INTO t1(`IZAVORGANG_ID`,`KUERZEL`,`IZAANALYSEART_ID`,`IZAPMKZ_ID`)VALUES('D0000000004','101','D0000000001','I0000000001');
  2352. SELECT `IZAVORGANG_ID` FROM t1 WHERE `KUERZEL` IN(SELECT MIN(`KUERZEL`)`Feld1` FROM t1 WHERE `KUERZEL` LIKE'601%'And`IZAANALYSEART_ID`='D0000000001');
  2353. IZAVORGANG_ID
  2354. D0000000001
  2355. drop table t1;
  2356. CREATE TABLE `t1` ( `aid` int(11) NOT NULL default '0', `bid` int(11) NOT NULL default '0', PRIMARY KEY  (`aid`,`bid`));
  2357. CREATE TABLE `t2` ( `aid` int(11) NOT NULL default '0', `bid` int(11) NOT NULL default '0', PRIMARY KEY  (`aid`,`bid`));
  2358. insert into t1 values (1,1),(1,2),(2,1),(2,2);
  2359. insert into t2 values (1,2),(2,2);
  2360. select * from t1 where t1.aid not in (select aid from t2 where bid=t1.bid);
  2361. aid bid
  2362. 1 1
  2363. 2 1
  2364. alter table t2 drop primary key;
  2365. alter table t2 add key KEY1 (aid, bid);
  2366. select * from t1 where t1.aid not in (select aid from t2 where bid=t1.bid);
  2367. aid bid
  2368. 1 1
  2369. 2 1
  2370. alter table t2 drop key KEY1;
  2371. alter table t2 add primary key (bid, aid);
  2372. select * from t1 where t1.aid not in (select aid from t2 where bid=t1.bid);
  2373. aid bid
  2374. 1 1
  2375. 2 1
  2376. drop table t1,t2;
  2377. CREATE TABLE t1 (howmanyvalues bigint, avalue int);
  2378. INSERT INTO t1 VALUES (1, 1),(2, 1),(2, 2),(3, 1),(3, 2),(3, 3),(4, 1),(4, 2),(4, 3),(4, 4);
  2379. SELECT howmanyvalues, count(*) from t1 group by howmanyvalues;
  2380. howmanyvalues count(*)
  2381. 1 1
  2382. 2 2
  2383. 3 3
  2384. 4 4
  2385. SELECT a.howmanyvalues, (SELECT count(*) from t1 b where b.howmanyvalues = a.howmanyvalues) as mycount from t1 a group by a.howmanyvalues;
  2386. howmanyvalues mycount
  2387. 1 1
  2388. 2 2
  2389. 3 3
  2390. 4 4
  2391. CREATE INDEX t1_howmanyvalues_idx ON t1 (howmanyvalues);
  2392. SELECT a.howmanyvalues, (SELECT count(*) from t1 b where b.howmanyvalues+1 = a.howmanyvalues+1) as mycount from t1 a group by a.howmanyvalues;
  2393. howmanyvalues mycount
  2394. 1 1
  2395. 2 2
  2396. 3 3
  2397. 4 4
  2398. SELECT a.howmanyvalues, (SELECT count(*) from t1 b where b.howmanyvalues = a.howmanyvalues) as mycount from t1 a group by a.howmanyvalues;
  2399. howmanyvalues mycount
  2400. 1 1
  2401. 2 2
  2402. 3 3
  2403. 4 4
  2404. SELECT a.howmanyvalues, (SELECT count(*) from t1 b where b.howmanyvalues = a.avalue) as mycount from t1 a group by a.howmanyvalues;
  2405. howmanyvalues mycount
  2406. 1 1
  2407. 2 1
  2408. 3 1
  2409. 4 1
  2410. drop table t1;
  2411. create table t1 (x int);
  2412. select  (select b.x from t1 as b where b.x=a.x) from t1 as a where a.x=2 group by a.x;
  2413. (select b.x from t1 as b where b.x=a.x)
  2414. drop table t1;
  2415. CREATE TABLE `t1` ( `master` int(10) unsigned NOT NULL default '0', `map` smallint(6) unsigned NOT NULL default '0', `slave` int(10) unsigned NOT NULL default '0', `access` int(10) unsigned NOT NULL default '0', UNIQUE KEY `access_u` (`master`,`map`,`slave`));
  2416. INSERT INTO `t1` VALUES (1,0,0,700),(1,1,1,400),(1,5,5,400),(1,12,12,400),(1,12,32,400),(4,12,32,400);
  2417. CREATE TABLE `t2` ( `id` int(10) unsigned NOT NULL default '0', `pid` int(10) unsigned NOT NULL default '0', `map` smallint(6) unsigned NOT NULL default '0', `level` tinyint(4) unsigned NOT NULL default '0', `title` varchar(255) default NULL, PRIMARY KEY  (`id`,`pid`,`map`), KEY `level` (`level`), KEY `id` (`id`,`map`)) ;
  2418. INSERT INTO `t2` VALUES (6,5,12,7,'a'),(12,0,0,7,'a'),(12,1,0,7,'a'),(12,5,5,7,'a'),(12,5,12,7,'a');
  2419. SELECT b.sc FROM (SELECT (SELECT a.access FROM t1 a WHERE a.map = op.map AND a.slave = op.pid AND a.master = 1) ac FROM t2 op WHERE op.id = 12 AND op.map = 0) b;
  2420. ERROR 42S22: Unknown column 'b.sc' in 'field list'
  2421. SELECT b.ac FROM (SELECT (SELECT a.access FROM t1 a WHERE a.map = op.map AND a.slave = op.pid AND a.master = 1) ac FROM t2 op WHERE op.id = 12 AND op.map = 0) b;
  2422. ac
  2423. 700
  2424. NULL
  2425. drop tables t1,t2;
  2426. create table t1 (a int not null, b int not null, c int, primary key (a,b));
  2427. insert into t1 values (1,1,1), (2,2,2), (3,3,3);
  2428. set @b:= 0;
  2429. explain select sum(a) from t1 where b > @b;
  2430. id select_type table type possible_keys key key_len ref rows Extra
  2431. 1 SIMPLE t1 index NULL PRIMARY 8 NULL 3 Using where; Using index
  2432. set @a:= (select sum(a) from t1 where b > @b);
  2433. explain select a from t1 where c=2;
  2434. id select_type table type possible_keys key key_len ref rows Extra
  2435. 1 SIMPLE t1 ALL NULL NULL NULL NULL 3 Using where
  2436. do @a:= (select sum(a) from t1 where b > @b);
  2437. explain select a from t1 where c=2;
  2438. id select_type table type possible_keys key key_len ref rows Extra
  2439. 1 SIMPLE t1 ALL NULL NULL NULL NULL 3 Using where
  2440. drop table t1;
  2441. set @got_val= (SELECT 1 FROM (SELECT 'A' as my_col) as T1 ) ;
  2442. create table t1 (a int, b int);
  2443. create table t2 (a int, b int);
  2444. insert into t1 values (1,1),(1,2),(1,3),(2,4),(2,5);
  2445. insert into t2 values (1,3),(2,1);
  2446. select distinct a,b, (select max(b) from t2 where t1.b=t2.a) from t1 order by t1.b;
  2447. a b (select max(b) from t2 where t1.b=t2.a)
  2448. 1 1 3
  2449. 1 2 1
  2450. 1 3 NULL
  2451. 2 4 NULL
  2452. 2 5 NULL
  2453. drop table t1, t2;
  2454. create table t1 (id int);
  2455. create table t2 (id int, body text, fulltext (body));
  2456. insert into t1 values(1),(2),(3);
  2457. insert into t2 values (1,'test'), (2,'mysql'), (3,'test'), (4,'test');
  2458. select count(distinct id) from t1 where id in (select id from t2 where match(body) against ('mysql' in boolean mode));
  2459. count(distinct id)
  2460. 1
  2461. drop table t2,t1;
  2462. create table t1 (s1 int,s2 int);
  2463. insert into t1 values (20,15);
  2464. select * from t1 where  (('a',null) <=> (select 'a',s2 from t1 where s1 = 0));
  2465. s1 s2
  2466. drop table t1;
  2467. create table t1 (s1 int);
  2468. insert into t1 values (1),(null);
  2469. select * from t1 where s1 < all (select s1 from t1);
  2470. s1
  2471. select s1, s1 < all (select s1 from t1) from t1;
  2472. s1 s1 < all (select s1 from t1)
  2473. 1 0
  2474. NULL NULL
  2475. drop table t1;
  2476. CREATE TABLE t1 (
  2477. Code char(3) NOT NULL default '',
  2478. Name char(52) NOT NULL default '',
  2479. Continent enum('Asia','Europe','North America','Africa','Oceania','Antarctica','South America') NOT NULL default 'Asia',
  2480. Region char(26) NOT NULL default '',
  2481. SurfaceArea float(10,2) NOT NULL default '0.00',
  2482. IndepYear smallint(6) default NULL,
  2483. Population int(11) NOT NULL default '0',
  2484. LifeExpectancy float(3,1) default NULL,
  2485. GNP float(10,2) default NULL,
  2486. GNPOld float(10,2) default NULL,
  2487. LocalName char(45) NOT NULL default '',
  2488. GovernmentForm char(45) NOT NULL default '',
  2489. HeadOfState char(60) default NULL,
  2490. Capital int(11) default NULL,
  2491. Code2 char(2) NOT NULL default ''
  2492. ) ENGINE=MyISAM;
  2493. INSERT INTO t1 VALUES ('XXX','Xxxxx','Oceania','Xxxxxx',26.00,0,0,0,0,0,'Xxxxx','Xxxxx','Xxxxx',NULL,'XX');
  2494. INSERT INTO t1 VALUES ('ASM','American Samoa','Oceania','Polynesia',199.00,0,68000,75.1,334.00,NULL,'Amerika Samoa','US Territory','George W. Bush',54,'AS');
  2495. INSERT INTO t1 VALUES ('ATF','French Southern territories','Antarctica','Antarctica',7780.00,0,0,NULL,0.00,NULL,'Terres australes fran鏰ises','Nonmetropolitan Territory of France','Jacques Chirac',NULL,'TF');
  2496. INSERT INTO t1 VALUES ('UMI','United States Minor Outlying Islands','Oceania','Micronesia/Caribbean',16.00,0,0,NULL,0.00,NULL,'United States Minor Outlying Islands','Dependent Territory of the US','George W. Bush',NULL,'UM');
  2497. /*!40000 ALTER TABLE t1 ENABLE KEYS */;
  2498. SELECT DISTINCT Continent AS c FROM t1 WHERE Code <> SOME ( SELECT Code FROM t1 WHERE Continent = c AND Population < 200);
  2499. c
  2500. Oceania
  2501. drop table t1;
  2502. create table t1 (a1 int);
  2503. create table t2 (b1 int);
  2504. select * from t1 where a2 > any(select b1 from t2);
  2505. ERROR 42S22: Unknown column 'a2' in 'IN/ALL/ANY subquery'
  2506. select * from t1 where a1 > any(select b1 from t2);
  2507. a1
  2508. drop table t1,t2;
  2509. create table t1 (a integer, b integer);
  2510. select (select * from t1) = (select 1,2);
  2511. (select * from t1) = (select 1,2)
  2512. NULL
  2513. select (select 1,2) = (select * from t1);
  2514. (select 1,2) = (select * from t1)
  2515. NULL
  2516. select  row(1,2) = ANY (select * from t1);
  2517. row(1,2) = ANY (select * from t1)
  2518. 0
  2519. select  row(1,2) != ALL (select * from t1);
  2520. row(1,2) != ALL (select * from t1)
  2521. 1
  2522. drop table t1;
  2523. create table t1 (a integer, b integer);
  2524. select row(1,(2,2)) in (select * from t1 );
  2525. ERROR 21000: Operand should contain 2 column(s)
  2526. select row(1,(2,2)) = (select * from t1 );
  2527. ERROR 21000: Operand should contain 2 column(s)
  2528. select (select * from t1) = row(1,(2,2));
  2529. ERROR 21000: Operand should contain 1 column(s)
  2530. drop table t1;
  2531. create  table t1 (a integer);
  2532. insert into t1 values (1);
  2533. select 1 = ALL (select 1 from t1 where 1 = xx ), 1 as xx ;
  2534. ERROR 42S22: Reference 'xx' not supported (forward reference in item list)
  2535. select 1 = ALL (select 1 from t1 where 1 = xx ), 1 as xx;
  2536. ERROR 42S22: Reference 'xx' not supported (forward reference in item list)
  2537. select 1 as xx, 1 = ALL (  select 1 from t1 where 1 = xx );
  2538. xx 1 = ALL (  select 1 from t1 where 1 = xx )
  2539. 1 1
  2540. select 1 = ALL (select 1 from t1 where 1 = xx ), 1 as xx;
  2541. ERROR 42S22: Reference 'xx' not supported (forward reference in item list)
  2542. select 1 = ALL (select 1 from t1 where 1 = xx ), 1 as xx from DUAL;
  2543. ERROR 42S22: Reference 'xx' not supported (forward reference in item list)
  2544. drop table t1;
  2545. CREATE TABLE t1 (
  2546. categoryId int(11) NOT NULL,
  2547. courseId int(11) NOT NULL,
  2548. startDate datetime NOT NULL,
  2549. endDate datetime NOT NULL,
  2550. createDate datetime NOT NULL,
  2551. modifyDate timestamp NOT NULL,
  2552. attributes text NOT NULL
  2553. );
  2554. INSERT INTO t1 VALUES (1,41,'2004-02-09','2010-01-01','2004-02-09','2004-02-09',''),
  2555. (1,86,'2004-08-16','2004-08-16','2004-08-16','2004-08-16',''),
  2556. (1,87,'2004-08-16','2004-08-16','2004-08-16','2004-08-16',''),
  2557. (2,52,'2004-03-15','2004-10-01','2004-03-15','2004-09-17',''),
  2558. (2,53,'2004-03-16','2004-10-01','2004-03-16','2004-09-17',''),
  2559. (2,88,'2004-08-16','2004-08-16','2004-08-16','2004-08-16',''),
  2560. (2,89,'2004-08-16','2004-08-16','2004-08-16','2004-08-16',''),
  2561. (3,51,'2004-02-09','2010-01-01','2004-02-09','2004-02-09',''),
  2562. (5,12,'2004-02-18','2010-01-01','2004-02-18','2004-02-18','');
  2563. CREATE TABLE t2 (
  2564. userId int(11) NOT NULL,
  2565. courseId int(11) NOT NULL,
  2566. date datetime NOT NULL
  2567. );
  2568. INSERT INTO t2 VALUES (5141,71,'2003-11-18'),
  2569. (5141,72,'2003-11-25'),(5141,41,'2004-08-06'),
  2570. (5141,52,'2004-08-06'),(5141,53,'2004-08-06'),
  2571. (5141,12,'2004-08-06'),(5141,86,'2004-10-21'),
  2572. (5141,87,'2004-10-21'),(5141,88,'2004-10-21'),
  2573. (5141,89,'2004-10-22'),(5141,51,'2004-10-26');
  2574. CREATE TABLE t3 (
  2575. groupId int(11) NOT NULL,
  2576. parentId int(11) NOT NULL,
  2577. startDate datetime NOT NULL,
  2578. endDate datetime NOT NULL,
  2579. createDate datetime NOT NULL,
  2580. modifyDate timestamp NOT NULL,
  2581. ordering int(11)
  2582. );
  2583. INSERT INTO t3 VALUES (12,9,'1000-01-01','3999-12-31','2004-01-29','2004-01-29',NULL);
  2584. CREATE TABLE t4 (
  2585. id int(11) NOT NULL,
  2586. groupTypeId int(11) NOT NULL,
  2587. groupKey varchar(50) NOT NULL,
  2588. name text,
  2589. ordering int(11),
  2590. description text,
  2591. createDate datetime NOT NULL,
  2592. modifyDate timestamp NOT NULL
  2593. );
  2594. INSERT INTO t4 VALUES (9,5,'stationer','stationer',0,'Stationer','2004-01-29','2004-01-29'),
  2595. (12,5,'group2','group2',0,'group2','2004-01-29','2004-01-29');
  2596. CREATE TABLE t5 (
  2597. userId int(11) NOT NULL,
  2598. groupId int(11) NOT NULL,
  2599. createDate datetime NOT NULL,
  2600. modifyDate timestamp NOT NULL
  2601. );
  2602. INSERT INTO t5 VALUES (5141,12,'2004-08-06','2004-08-06');
  2603. select
  2604. count(distinct t2.userid) pass,
  2605. groupstuff.*,
  2606. count(t2.courseid) crse,
  2607. t1.categoryid, 
  2608. t2.courseid,
  2609. date_format(date, '%b%y') as colhead
  2610. from t2   
  2611. join t1 on t2.courseid=t1.courseid  
  2612. join
  2613. (
  2614. select 
  2615. t5.userid,  
  2616. parentid,  
  2617. parentgroup,  
  2618. childid,  
  2619. groupname,  
  2620. grouptypeid  
  2621. from t5 
  2622. join 
  2623. (
  2624. select t4.id as parentid,  
  2625. t4.name as parentgroup,  
  2626. t4.id as childid,  
  2627. t4.name as groupname,  
  2628. t4.grouptypeid  
  2629. from   t4  
  2630. ) as gin on t5.groupid=gin.childid 
  2631. ) as groupstuff on t2.userid = groupstuff.userid 
  2632. group by 
  2633. groupstuff.groupname, colhead , t2.courseid;
  2634. pass userid parentid parentgroup childid groupname grouptypeid crse categoryid courseid colhead
  2635. 1 5141 12 group2 12 group2 5 1 5 12 Aug04
  2636. 1 5141 12 group2 12 group2 5 1 1 41 Aug04
  2637. 1 5141 12 group2 12 group2 5 1 2 52 Aug04
  2638. 1 5141 12 group2 12 group2 5 1 2 53 Aug04
  2639. 1 5141 12 group2 12 group2 5 1 3 51 Oct04
  2640. 1 5141 12 group2 12 group2 5 1 1 86 Oct04
  2641. 1 5141 12 group2 12 group2 5 1 1 87 Oct04
  2642. 1 5141 12 group2 12 group2 5 1 2 88 Oct04
  2643. 1 5141 12 group2 12 group2 5 1 2 89 Oct04
  2644. drop table t1, t2, t3, t4, t5;
  2645. create table t1 (a int);
  2646. insert into t1 values (1), (2), (3);
  2647. SELECT 1 FROM t1 WHERE (SELECT 1) in (SELECT 1);
  2648. 1
  2649. 1
  2650. 1
  2651. 1
  2652. drop table t1;
  2653. create table t1 (a int);
  2654. create table t2 (a int);
  2655. insert into t1 values (1),(2);
  2656. insert into t2 values (0),(1),(2),(3);
  2657. select a from t2 where a in (select a from t1);
  2658. a
  2659. 1
  2660. 2
  2661. select a from t2 having a in (select a from t1);
  2662. a
  2663. 1
  2664. 2
  2665. prepare stmt1 from "select a from t2 where a in (select a from t1)";
  2666. execute stmt1;
  2667. a
  2668. 1
  2669. 2
  2670. execute stmt1;
  2671. a
  2672. 1
  2673. 2
  2674. deallocate prepare stmt1;
  2675. prepare stmt1 from "select a from t2 having a in (select a from t1)";
  2676. execute stmt1;
  2677. a
  2678. 1
  2679. 2
  2680. execute stmt1;
  2681. a
  2682. 1
  2683. 2
  2684. deallocate prepare stmt1;
  2685. drop table t1, t2;
  2686. create table t1 (a int, b int);
  2687. insert into t1 values (1,2);
  2688. select 1 = (select * from t1);
  2689. ERROR 21000: Operand should contain 1 column(s)
  2690. select (select * from t1) = 1;
  2691. ERROR 21000: Operand should contain 2 column(s)
  2692. select (1,2) = (select a from t1);
  2693. ERROR 21000: Operand should contain 2 column(s)
  2694. select (select a from t1) = (1,2);
  2695. ERROR 21000: Operand should contain 1 column(s)
  2696. select (1,2,3) = (select * from t1);
  2697. ERROR 21000: Operand should contain 3 column(s)
  2698. select (select * from t1) = (1,2,3);
  2699. ERROR 21000: Operand should contain 2 column(s)
  2700. drop table t1
  2701. #;
  2702. CREATE TABLE `t1` (
  2703. `itemid` bigint(20) unsigned NOT NULL auto_increment,
  2704. `sessionid` bigint(20) unsigned default NULL,
  2705. `time` int(10) unsigned NOT NULL default '0',
  2706. `type` set('A','D','E','F','G','I','L','N','U') collate latin1_general_ci NOT
  2707. NULL default '',
  2708. `data` text collate latin1_general_ci NOT NULL,
  2709. PRIMARY KEY  (`itemid`)
  2710. ) DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
  2711. INSERT INTO `t1` VALUES (1, 1, 1, 'D', '');
  2712. CREATE TABLE `t2` (
  2713. `sessionid` bigint(20) unsigned NOT NULL auto_increment,
  2714. `pid` int(10) unsigned NOT NULL default '0',
  2715. `date` int(10) unsigned NOT NULL default '0',
  2716. `ip` varchar(15) collate latin1_general_ci NOT NULL default '',
  2717. PRIMARY KEY  (`sessionid`)
  2718. ) DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci;
  2719. INSERT INTO `t2` VALUES (1, 1, 1, '10.10.10.1');
  2720. SELECT s.ip, count( e.itemid ) FROM `t1` e JOIN t2 s ON s.sessionid = e.sessionid WHERE e.sessionid = ( SELECT sessionid FROM t2 ORDER BY sessionid DESC LIMIT 1 ) GROUP BY s.ip HAVING count( e.itemid ) >0 LIMIT 0 , 30;
  2721. ip count( e.itemid )
  2722. 10.10.10.1 1
  2723. drop tables t1,t2;
  2724. create table t1 (fld enum('0','1'));
  2725. insert into t1 values ('1');
  2726. select * from (select max(fld) from t1) as foo;
  2727. max(fld)
  2728. 1
  2729. drop table t1;
  2730. CREATE TABLE t1 (one int, two int, flag char(1));
  2731. CREATE TABLE t2 (one int, two int, flag char(1));
  2732. INSERT INTO t1 VALUES(1,2,'Y'),(2,3,'Y'),(3,4,'Y'),(5,6,'N'),(7,8,'N');
  2733. INSERT INTO t2 VALUES(1,2,'Y'),(2,3,'Y'),(3,4,'Y'),(5,6,'N'),(7,8,'N');
  2734. SELECT * FROM t1
  2735. WHERE ROW(one,two) IN (SELECT DISTINCT one,two FROM t2 WHERE flag = 'N');
  2736. one two flag
  2737. 5 6 N
  2738. 7 8 N
  2739. SELECT * FROM t1
  2740. WHERE ROW(one,two) IN (SELECT DISTINCT one,two FROM t1 WHERE flag = 'N');
  2741. one two flag
  2742. 5 6 N
  2743. 7 8 N
  2744. insert into t2 values (null,null,'N');
  2745. insert into t2 values (null,3,'0');
  2746. insert into t2 values (null,5,'0');
  2747. insert into t2 values (10,null,'0');
  2748. insert into t1 values (10,3,'0');
  2749. insert into t1 values (10,5,'0');
  2750. insert into t1 values (10,10,'0');
  2751. SELECT one,two,ROW(one,two) IN (SELECT one,two FROM t2 WHERE flag = 'N') as 'test' from t1;
  2752. one two test
  2753. 1 2 NULL
  2754. 2 3 NULL
  2755. 3 4 NULL
  2756. 5 6 1
  2757. 7 8 1
  2758. 10 3 NULL
  2759. 10 5 NULL
  2760. 10 10 NULL
  2761. SELECT one,two from t1 where ROW(one,two) IN (SELECT one,two FROM t2 WHERE flag = 'N');
  2762. one two
  2763. 5 6
  2764. 7 8
  2765. SELECT one,two,ROW(one,two) IN (SELECT one,two FROM t2 WHERE flag = 'N' group by one,two) as 'test' from t1;
  2766. one two test
  2767. 1 2 NULL
  2768. 2 3 NULL
  2769. 3 4 NULL
  2770. 5 6 1
  2771. 7 8 1
  2772. 10 3 NULL
  2773. 10 5 NULL
  2774. 10 10 NULL
  2775. SELECT one,two,ROW(one,two) IN (SELECT one,two FROM t2 WHERE flag = '0') as 'test' from t1;
  2776. one two test
  2777. 1 2 0
  2778. 2 3 NULL
  2779. 3 4 0
  2780. 5 6 0
  2781. 7 8 0
  2782. 10 3 NULL
  2783. 10 5 NULL
  2784. 10 10 NULL
  2785. SELECT one,two,ROW(one,two) IN (SELECT one,two FROM t2 WHERE flag = '0' group by one,two) as 'test' from t1;
  2786. one two test
  2787. 1 2 0
  2788. 2 3 NULL
  2789. 3 4 0
  2790. 5 6 0
  2791. 7 8 0
  2792. 10 3 NULL
  2793. 10 5 NULL
  2794. 10 10 NULL
  2795. explain extended SELECT one,two,ROW(one,two) IN (SELECT one,two FROM t2 WHERE flag = '0') as 'test' from t1;
  2796. id select_type table type possible_keys key key_len ref rows Extra
  2797. 1 PRIMARY t1 ALL NULL NULL NULL NULL 8
  2798. 2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 9 Using where
  2799. Warnings:
  2800. Note 1003 select test.t1.one AS `one`,test.t1.two AS `two`,<in_optimizer>((test.t1.one,test.t1.two),<exists>(select test.t2.one AS `one`,test.t2.two AS `two` from test.t2 where ((test.t2.flag = _latin1'0') and ((<cache>(test.t1.one) = test.t2.one) or isnull(test.t2.one)) and ((<cache>(test.t1.two) = test.t2.two) or isnull(test.t2.two))) having (<is_not_null_test>(test.t2.one) and <is_not_null_test>(test.t2.two)))) AS `test` from test.t1
  2801. explain extended SELECT one,two from t1 where ROW(one,two) IN (SELECT one,two FROM t2 WHERE flag = 'N');
  2802. id select_type table type possible_keys key key_len ref rows Extra
  2803. 1 PRIMARY t1 ALL NULL NULL NULL NULL 8 Using where
  2804. 2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 9 Using where
  2805. Warnings:
  2806. Note 1003 select test.t1.one AS `one`,test.t1.two AS `two` from test.t1 where <in_optimizer>((test.t1.one,test.t1.two),<exists>(select test.t2.one AS `one`,test.t2.two AS `two` from test.t2 where ((test.t2.flag = _latin1'N') and (<cache>(test.t1.one) = test.t2.one) and (<cache>(test.t1.two) = test.t2.two))))
  2807. explain extended SELECT one,two,ROW(one,two) IN (SELECT one,two FROM t2 WHERE flag = '0' group by one,two) as 'test' from t1;
  2808. id select_type table type possible_keys key key_len ref rows Extra
  2809. 1 PRIMARY t1 ALL NULL NULL NULL NULL 8
  2810. 2 DEPENDENT SUBQUERY t2 ALL NULL NULL NULL NULL 9 Using where; Using temporary; Using filesort
  2811. Warnings:
  2812. Note 1003 select test.t1.one AS `one`,test.t1.two AS `two`,<in_optimizer>((test.t1.one,test.t1.two),<exists>(select test.t2.one AS `one`,test.t2.two AS `two` from test.t2 where (test.t2.flag = _latin1'0') group by test.t2.one,test.t2.two having (((<cache>(test.t1.one) = test.t2.one) or isnull(test.t2.one)) and ((<cache>(test.t1.two) = test.t2.two) or isnull(test.t2.two)) and <is_not_null_test>(test.t2.one) and <is_not_null_test>(test.t2.two)))) AS `test` from test.t1
  2813. DROP TABLE t1,t2;
  2814. CREATE TABLE t1 (a char(5), b char(5));
  2815. INSERT INTO t1 VALUES (NULL,'aaa'), ('aaa','aaa');
  2816. SELECT * FROM t1 WHERE (a,b) IN (('aaa','aaa'), ('aaa','bbb'));
  2817. a b
  2818. aaa aaa
  2819. DROP TABLE t1;
  2820. CREATE TABLE t1 (a int);
  2821. CREATE TABLE t2 (a int, b int);
  2822. CREATE TABLE t3 (b int NOT NULL);
  2823. INSERT INTO t1 VALUES (1), (2), (3), (4);
  2824. INSERT INTO t2 VALUES (1,10), (3,30);
  2825. SELECT * FROM t2 LEFT JOIN t3 ON t2.b=t3.b
  2826. WHERE t3.b IS NOT NULL OR t2.a > 10;
  2827. a b b
  2828. SELECT * FROM t1
  2829. WHERE t1.a NOT IN (SELECT a FROM t2 LEFT JOIN t3 ON t2.b=t3.b
  2830. WHERE t3.b IS NOT NULL OR t2.a > 10);
  2831. a
  2832. 1
  2833. 2
  2834. 3
  2835. 4
  2836. DROP TABLE t1,t2,t3;
  2837. purge master logs before (select adddate(current_timestamp(), interval -4 day));