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

MySQL数据库

开发平台:

Visual C++

  1. drop table if exists t1,t2,t3,t4,t5;
  2. CREATE TABLE t1 (
  3. grp int(11) default NULL,
  4. a bigint(20) unsigned default NULL,
  5. c char(10) NOT NULL default ''
  6. ) ENGINE=MyISAM;
  7. INSERT INTO t1 VALUES (1,1,'a'),(2,2,'b'),(2,3,'c'),(3,4,'E'),(3,5,'C'),(3,6,'D'),(NULL,NULL,'');
  8. create table t2 (id int, a bigint unsigned not null, c char(10), d int, primary key (a));
  9. insert into t2 values (1,1,"a",1),(3,4,"A",4),(3,5,"B",5),(3,6,"C",6),(4,7,"D",7);
  10. select t1.*,t2.* from t1 JOIN t2 where t1.a=t2.a;
  11. grp a c id a c d
  12. 1 1 a 1 1 a 1
  13. 3 4 E 3 4 A 4
  14. 3 5 C 3 5 B 5
  15. 3 6 D 3 6 C 6
  16. select t1.*,t2.* from t1 left join t2 on (t1.a=t2.a) order by t1.grp,t1.a,t2.c;
  17. grp a c id a c d
  18. NULL NULL NULL NULL NULL NULL
  19. 1 1 a 1 1 a 1
  20. 2 2 b NULL NULL NULL NULL
  21. 2 3 c NULL NULL NULL NULL
  22. 3 4 E 3 4 A 4
  23. 3 5 C 3 5 B 5
  24. 3 6 D 3 6 C 6
  25. select t1.*,t2.* from { oj t2 left outer join t1 on (t1.a=t2.a) };
  26. grp a c id a c d
  27. 1 1 a 1 1 a 1
  28. 3 4 E 3 4 A 4
  29. 3 5 C 3 5 B 5
  30. 3 6 D 3 6 C 6
  31. NULL NULL NULL 4 7 D 7
  32. select t1.*,t2.* from t1 as t0,{ oj t2 left outer join t1 on (t1.a=t2.a) } WHERE t0.a=2;
  33. grp a c id a c d
  34. 1 1 a 1 1 a 1
  35. 3 4 E 3 4 A 4
  36. 3 5 C 3 5 B 5
  37. 3 6 D 3 6 C 6
  38. NULL NULL NULL 4 7 D 7
  39. select t1.*,t2.* from t1 left join t2 using (a);
  40. grp a c id a c d
  41. 1 1 a 1 1 a 1
  42. 2 2 b NULL NULL NULL NULL
  43. 2 3 c NULL NULL NULL NULL
  44. 3 4 E 3 4 A 4
  45. 3 5 C 3 5 B 5
  46. 3 6 D 3 6 C 6
  47. NULL NULL NULL NULL NULL NULL
  48. select t1.*,t2.* from t1 left join t2 using (a) where t1.a=t2.a;
  49. grp a c id a c d
  50. 1 1 a 1 1 a 1
  51. 3 4 E 3 4 A 4
  52. 3 5 C 3 5 B 5
  53. 3 6 D 3 6 C 6
  54. select t1.*,t2.* from t1 left join t2 using (a,c);
  55. grp a c id a c d
  56. 1 1 a 1 1 a 1
  57. 2 2 b NULL NULL NULL NULL
  58. 2 3 c NULL NULL NULL NULL
  59. 3 4 E NULL NULL NULL NULL
  60. 3 5 C NULL NULL NULL NULL
  61. 3 6 D NULL NULL NULL NULL
  62. NULL NULL NULL NULL NULL NULL
  63. select t1.*,t2.* from t1 left join t2 using (c);
  64. grp a c id a c d
  65. 1 1 a 1 1 a 1
  66. 1 1 a 3 4 A 4
  67. 2 2 b 3 5 B 5
  68. 2 3 c 3 6 C 6
  69. 3 4 E NULL NULL NULL NULL
  70. 3 5 C 3 6 C 6
  71. 3 6 D 4 7 D 7
  72. NULL NULL NULL NULL NULL NULL
  73. select t1.*,t2.* from t1 natural left outer join t2;
  74. grp a c id a c d
  75. 1 1 a 1 1 a 1
  76. 2 2 b NULL NULL NULL NULL
  77. 2 3 c NULL NULL NULL NULL
  78. 3 4 E NULL NULL NULL NULL
  79. 3 5 C NULL NULL NULL NULL
  80. 3 6 D NULL NULL NULL NULL
  81. NULL NULL NULL NULL NULL NULL
  82. select t1.*,t2.* from t1 left join t2 on (t1.a=t2.a) where t2.id=3;
  83. grp a c id a c d
  84. 3 4 E 3 4 A 4
  85. 3 5 C 3 5 B 5
  86. 3 6 D 3 6 C 6
  87. select t1.*,t2.* from t1 left join t2 on (t1.a=t2.a) where t2.id is null;
  88. grp a c id a c d
  89. 2 2 b NULL NULL NULL NULL
  90. 2 3 c NULL NULL NULL NULL
  91. NULL NULL NULL NULL NULL NULL
  92. explain select t1.*,t2.* from t1,t2 where t1.a=t2.a and isnull(t2.a)=1;
  93. id select_type table type possible_keys key key_len ref rows Extra
  94. 1 SIMPLE NULL NULL NULL NULL NULL NULL NULL Impossible WHERE
  95. explain select t1.*,t2.* from t1 left join t2 on t1.a=t2.a where isnull(t2.a)=1;
  96. id select_type table type possible_keys key key_len ref rows Extra
  97. 1 SIMPLE t1 ALL NULL NULL NULL NULL 7
  98. 1 SIMPLE t2 eq_ref PRIMARY PRIMARY 8 test.t1.a 1 Using where
  99. select t1.*,t2.*,t3.a from t1 left join t2 on (t1.a=t2.a) left join t1 as t3 on (t2.a=t3.a);
  100. grp a c id a c d a
  101. 1 1 a 1 1 a 1 1
  102. 2 2 b NULL NULL NULL NULL NULL
  103. 2 3 c NULL NULL NULL NULL NULL
  104. 3 4 E 3 4 A 4 4
  105. 3 5 C 3 5 B 5 5
  106. 3 6 D 3 6 C 6 6
  107. NULL NULL NULL NULL NULL NULL NULL
  108. explain select t1.*,t2.*,t3.a from t1 left join t2 on (t3.a=t2.a) left join t1 as t3 on (t1.a=t3.a);
  109. ERROR 42000: Cross dependency found in OUTER JOIN; examine your ON conditions
  110. select t1.*,t2.*,t3.a from t1 left join t2 on (t3.a=t2.a) left join t1 as t3 on (t1.a=t3.a);
  111. ERROR 42000: Cross dependency found in OUTER JOIN; examine your ON conditions
  112. select t1.*,t2.*,t3.a from t1 left join t2 on (t3.a=t2.a) left join t1 as t3 on (t2.a=t3.a);
  113. ERROR 42000: Cross dependency found in OUTER JOIN; examine your ON conditions
  114. select t1.*,t2.* from t1 inner join t2 using (a);
  115. grp a c id a c d
  116. 1 1 a 1 1 a 1
  117. 3 4 E 3 4 A 4
  118. 3 5 C 3 5 B 5
  119. 3 6 D 3 6 C 6
  120. select t1.*,t2.* from t1 inner join t2 on (t1.a=t2.a);
  121. grp a c id a c d
  122. 1 1 a 1 1 a 1
  123. 3 4 E 3 4 A 4
  124. 3 5 C 3 5 B 5
  125. 3 6 D 3 6 C 6
  126. select t1.*,t2.* from t1 natural join t2;
  127. grp a c id d
  128. 1 1 a 1 1
  129. drop table t1,t2;
  130. CREATE TABLE t1 (
  131. usr_id INT unsigned NOT NULL,
  132. uniq_id INT unsigned NOT NULL AUTO_INCREMENT,
  133. start_num INT unsigned NOT NULL DEFAULT 1,
  134. increment INT unsigned NOT NULL DEFAULT 1,
  135. PRIMARY KEY (uniq_id),
  136. INDEX usr_uniq_idx (usr_id, uniq_id),
  137. INDEX uniq_usr_idx (uniq_id, usr_id)
  138. );
  139. CREATE TABLE t2 (
  140. id INT unsigned NOT NULL DEFAULT 0,
  141. usr2_id INT unsigned NOT NULL DEFAULT 0,
  142. max INT unsigned NOT NULL DEFAULT 0,
  143. c_amount INT unsigned NOT NULL DEFAULT 0,
  144. d_max INT unsigned NOT NULL DEFAULT 0,
  145. d_num INT unsigned NOT NULL DEFAULT 0,
  146. orig_time INT unsigned NOT NULL DEFAULT 0,
  147. c_time INT unsigned NOT NULL DEFAULT 0,
  148. active ENUM ("no","yes") NOT NULL,
  149. PRIMARY KEY (id,usr2_id),
  150. INDEX id_idx (id),
  151. INDEX usr2_idx (usr2_id)
  152. );
  153. INSERT INTO t1 VALUES (3,NULL,0,50),(3,NULL,0,200),(3,NULL,0,25),(3,NULL,0,84676),(3,NULL,0,235),(3,NULL,0,10),(3,NULL,0,3098),(3,NULL,0,2947),(3,NULL,0,8987),(3,NULL,0,8347654),(3,NULL,0,20398),(3,NULL,0,8976),(3,NULL,0,500),(3,NULL,0,198);
  154. SELECT t1.usr_id,t1.uniq_id,t1.increment,
  155. t2.usr2_id,t2.c_amount,t2.max
  156. FROM t1
  157. LEFT JOIN t2 ON t2.id = t1.uniq_id
  158. WHERE t1.uniq_id = 4
  159. ORDER BY t2.c_amount;
  160. usr_id uniq_id increment usr2_id c_amount max
  161. 3 4 84676 NULL NULL NULL
  162. SELECT t1.usr_id,t1.uniq_id,t1.increment,
  163. t2.usr2_id,t2.c_amount,t2.max
  164. FROM t2
  165. RIGHT JOIN t1 ON t2.id = t1.uniq_id
  166. WHERE t1.uniq_id = 4
  167. ORDER BY t2.c_amount;
  168. usr_id uniq_id increment usr2_id c_amount max
  169. 3 4 84676 NULL NULL NULL
  170. INSERT INTO t2 VALUES (2,3,3000,6000,0,0,746584,837484,'yes');
  171. INSERT INTO t2 VALUES (2,3,3000,6000,0,0,746584,837484,'yes');
  172. ERROR 23000: Duplicate entry '2-3' for key 1
  173. INSERT INTO t2 VALUES (7,3,1000,2000,0,0,746294,937484,'yes');
  174. SELECT t1.usr_id,t1.uniq_id,t1.increment,t2.usr2_id,t2.c_amount,t2.max FROM t1 LEFT JOIN t2 ON t2.id = t1.uniq_id WHERE t1.uniq_id = 4 ORDER BY t2.c_amount;
  175. usr_id uniq_id increment usr2_id c_amount max
  176. 3 4 84676 NULL NULL NULL
  177. SELECT t1.usr_id,t1.uniq_id,t1.increment,t2.usr2_id,t2.c_amount,t2.max FROM t1 LEFT JOIN t2 ON t2.id = t1.uniq_id WHERE t1.uniq_id = 4 GROUP BY t2.c_amount;
  178. usr_id uniq_id increment usr2_id c_amount max
  179. 3 4 84676 NULL NULL NULL
  180. SELECT t1.usr_id,t1.uniq_id,t1.increment,t2.usr2_id,t2.c_amount,t2.max FROM t1 LEFT JOIN t2 ON t2.id = t1.uniq_id WHERE t1.uniq_id = 4;
  181. usr_id uniq_id increment usr2_id c_amount max
  182. 3 4 84676 NULL NULL NULL
  183. drop table t1,t2;
  184. CREATE TABLE t1 (
  185. cod_asig int(11) DEFAULT '0' NOT NULL,
  186. desc_larga_cat varchar(80) DEFAULT '' NOT NULL,
  187. desc_larga_cas varchar(80) DEFAULT '' NOT NULL,
  188. desc_corta_cat varchar(40) DEFAULT '' NOT NULL,
  189. desc_corta_cas varchar(40) DEFAULT '' NOT NULL,
  190. cred_total double(3,1) DEFAULT '0.0' NOT NULL,
  191. pre_requisit int(11),
  192. co_requisit int(11),
  193. preco_requisit int(11),
  194. PRIMARY KEY (cod_asig)
  195. );
  196. INSERT INTO t1 VALUES (10360,'asdfggfg','Introduccion a los  Ordenadores I','asdfggfg','Introduccio Ordinadors I',6.0,NULL,NULL,NULL);
  197. INSERT INTO t1 VALUES (10361,'Components i Circuits Electronics I','Componentes y Circuitos Electronicos I','Components i Circuits Electronics I','Comp. i Circ. Electr. I',6.0,NULL,NULL,NULL);
  198. INSERT INTO t1 VALUES (10362,'Laboratori d`Ordinadors','Laboratorio de Ordenadores','Laboratori d`Ordinadors','Laboratori Ordinadors',4.5,NULL,NULL,NULL);
  199. INSERT INTO t1 VALUES (10363,'Tecniques de Comunicacio Oral i Escrita','Tecnicas de Comunicacion Oral y Escrita','Tecniques de Comunicacio Oral i Escrita','Tec. Com. Oral i Escrita',4.5,NULL,NULL,NULL);
  200. INSERT INTO t1 VALUES (11403,'Projecte Fi de Carrera','Proyecto Fin de Carrera','Projecte Fi de Carrera','PFC',9.0,NULL,NULL,NULL);
  201. INSERT INTO t1 VALUES (11404,'+lgebra lineal','Algebra lineal','+lgebra lineal','+lgebra lineal',15.0,NULL,NULL,NULL);
  202. INSERT INTO t1 VALUES (11405,'+lgebra lineal','Algebra lineal','+lgebra lineal','+lgebra lineal',18.0,NULL,NULL,NULL);
  203. INSERT INTO t1 VALUES (11406,'Calcul Infinitesimal','C遧culo Infinitesimal','Calcul Infinitesimal','Calcul Infinitesimal',15.0,NULL,NULL,NULL);
  204. CREATE TABLE t2 (
  205. idAssignatura int(11) DEFAULT '0' NOT NULL,
  206. Grup int(11) DEFAULT '0' NOT NULL,
  207. Places smallint(6) DEFAULT '0' NOT NULL,
  208. PlacesOcupades int(11) DEFAULT '0',
  209. PRIMARY KEY (idAssignatura,Grup)
  210. );
  211. INSERT INTO t2 VALUES (10360,12,333,0);
  212. INSERT INTO t2 VALUES (10361,30,2,0);
  213. INSERT INTO t2 VALUES (10361,40,3,0);
  214. INSERT INTO t2 VALUES (10360,45,10,0);
  215. INSERT INTO t2 VALUES (10362,10,12,0);
  216. INSERT INTO t2 VALUES (10360,55,2,0);
  217. INSERT INTO t2 VALUES (10360,70,0,0);
  218. INSERT INTO t2 VALUES (10360,565656,0,0);
  219. INSERT INTO t2 VALUES (10360,32767,7,0);
  220. INSERT INTO t2 VALUES (10360,33,8,0);
  221. INSERT INTO t2 VALUES (10360,7887,85,0);
  222. INSERT INTO t2 VALUES (11405,88,8,0);
  223. INSERT INTO t2 VALUES (10360,0,55,0);
  224. INSERT INTO t2 VALUES (10360,99,0,0);
  225. INSERT INTO t2 VALUES (11411,30,10,0);
  226. INSERT INTO t2 VALUES (11404,0,0,0);
  227. INSERT INTO t2 VALUES (10362,11,111,0);
  228. INSERT INTO t2 VALUES (10363,33,333,0);
  229. INSERT INTO t2 VALUES (11412,55,0,0);
  230. INSERT INTO t2 VALUES (50003,66,6,0);
  231. INSERT INTO t2 VALUES (11403,5,0,0);
  232. INSERT INTO t2 VALUES (11406,11,11,0);
  233. INSERT INTO t2 VALUES (11410,11410,131,0);
  234. INSERT INTO t2 VALUES (11416,11416,32767,0);
  235. INSERT INTO t2 VALUES (11409,0,0,0);
  236. CREATE TABLE t3 (
  237. id int(11) NOT NULL auto_increment,
  238. dni_pasaporte char(16) DEFAULT '' NOT NULL,
  239. idPla int(11) DEFAULT '0' NOT NULL,
  240. cod_asig int(11) DEFAULT '0' NOT NULL,
  241. any smallint(6) DEFAULT '0' NOT NULL,
  242. quatrimestre smallint(6) DEFAULT '0' NOT NULL,
  243. estat char(1) DEFAULT 'M' NOT NULL,
  244. PRIMARY KEY (id),
  245. UNIQUE dni_pasaporte (dni_pasaporte,idPla),
  246. UNIQUE dni_pasaporte_2 (dni_pasaporte,idPla,cod_asig,any,quatrimestre)
  247. );
  248. INSERT INTO t3 VALUES (1,'11111111',1,10362,98,1,'M');
  249. CREATE TABLE t4 (
  250. id int(11) NOT NULL auto_increment,
  251. papa int(11) DEFAULT '0' NOT NULL,
  252. fill int(11) DEFAULT '0' NOT NULL,
  253. idPla int(11) DEFAULT '0' NOT NULL,
  254. PRIMARY KEY (id),
  255. KEY papa (idPla,papa),
  256. UNIQUE papa_2 (idPla,papa,fill)
  257. );
  258. INSERT INTO t4 VALUES (1,-1,10360,1);
  259. INSERT INTO t4 VALUES (2,-1,10361,1);
  260. INSERT INTO t4 VALUES (3,-1,10362,1);
  261. SELECT DISTINCT fill,desc_larga_cat,cred_total,Grup,Places,PlacesOcupades FROM t4 LEFT JOIN t3 ON t3.cod_asig=fill AND estat='S'   AND dni_pasaporte='11111111'   AND t3.idPla=1 , t2,t1 WHERE fill=t1.cod_asig   AND Places>PlacesOcupades   AND fill=idAssignatura   AND t4.idPla=1   AND papa=-1;
  262. fill desc_larga_cat cred_total Grup Places PlacesOcupades
  263. 10360 asdfggfg 6.0 0 55 0
  264. 10360 asdfggfg 6.0 12 333 0
  265. 10360 asdfggfg 6.0 33 8 0
  266. 10360 asdfggfg 6.0 45 10 0
  267. 10360 asdfggfg 6.0 55 2 0
  268. 10360 asdfggfg 6.0 7887 85 0
  269. 10360 asdfggfg 6.0 32767 7 0
  270. 10361 Components i Circuits Electronics I 6.0 30 2 0
  271. 10361 Components i Circuits Electronics I 6.0 40 3 0
  272. 10362 Laboratori d`Ordinadors 4.5 10 12 0
  273. 10362 Laboratori d`Ordinadors 4.5 11 111 0
  274. SELECT DISTINCT fill,t3.idPla FROM t4 LEFT JOIN t3 ON t3.cod_asig=t4.fill AND t3.estat='S' AND t3.dni_pasaporte='1234' AND t3.idPla=1 ;
  275. fill idPla
  276. 10360 NULL
  277. 10361 NULL
  278. 10362 NULL
  279. INSERT INTO t3 VALUES (3,'1234',1,10360,98,1,'S');
  280. SELECT DISTINCT fill,t3.idPla FROM t4 LEFT JOIN t3 ON t3.cod_asig=t4.fill AND t3.estat='S' AND t3.dni_pasaporte='1234' AND t3.idPla=1 ;
  281. fill idPla
  282. 10360 1
  283. 10361 NULL
  284. 10362 NULL
  285. drop table t1,t2,t3,test.t4;
  286. CREATE TABLE t1 (
  287. id smallint(5) unsigned NOT NULL auto_increment,
  288. name char(60) DEFAULT '' NOT NULL,
  289. PRIMARY KEY (id)
  290. );
  291. INSERT INTO t1 VALUES (1,'Antonio Paz');
  292. INSERT INTO t1 VALUES (2,'Lilliana Angelovska');
  293. INSERT INTO t1 VALUES (3,'Thimble Smith');
  294. CREATE TABLE t2 (
  295. id smallint(5) unsigned NOT NULL auto_increment,
  296. owner smallint(5) unsigned DEFAULT '0' NOT NULL,
  297. name char(60),
  298. PRIMARY KEY (id)
  299. );
  300. INSERT INTO t2 VALUES (1,1,'El Gato');
  301. INSERT INTO t2 VALUES (2,1,'Perrito');
  302. INSERT INTO t2 VALUES (3,3,'Happy');
  303. select t1.name, t2.name, t2.id from t1 left join t2 on (t1.id = t2.owner);
  304. name name id
  305. Antonio Paz El Gato 1
  306. Antonio Paz Perrito 2
  307. Lilliana Angelovska NULL NULL
  308. Thimble Smith Happy 3
  309. select t1.name, t2.name, t2.id from t1 left join t2 on (t1.id = t2.owner) where t2.id is null;
  310. name name id
  311. Lilliana Angelovska NULL NULL
  312. explain select t1.name, t2.name, t2.id from t1 left join t2 on (t1.id = t2.owner) where t2.id is null;
  313. id select_type table type possible_keys key key_len ref rows Extra
  314. 1 SIMPLE t1 ALL NULL NULL NULL NULL 3
  315. 1 SIMPLE t2 ALL NULL NULL NULL NULL 3 Using where; Not exists
  316. explain select t1.name, t2.name, t2.id from t1 left join t2 on (t1.id = t2.owner) where t2.name is null;
  317. id select_type table type possible_keys key key_len ref rows Extra
  318. 1 SIMPLE t1 ALL NULL NULL NULL NULL 3
  319. 1 SIMPLE t2 ALL NULL NULL NULL NULL 3 Using where
  320. select count(*) from t1 left join t2 on (t1.id = t2.owner);
  321. count(*)
  322. 4
  323. select t1.name, t2.name, t2.id from t2 right join t1 on (t1.id = t2.owner);
  324. name name id
  325. Antonio Paz El Gato 1
  326. Antonio Paz Perrito 2
  327. Lilliana Angelovska NULL NULL
  328. Thimble Smith Happy 3
  329. select t1.name, t2.name, t2.id from t2 right join t1 on (t1.id = t2.owner) where t2.id is null;
  330. name name id
  331. Lilliana Angelovska NULL NULL
  332. explain select t1.name, t2.name, t2.id from t2 right join t1 on (t1.id = t2.owner) where t2.id is null;
  333. id select_type table type possible_keys key key_len ref rows Extra
  334. 1 SIMPLE t1 ALL NULL NULL NULL NULL 3
  335. 1 SIMPLE t2 ALL NULL NULL NULL NULL 3 Using where; Not exists
  336. explain select t1.name, t2.name, t2.id from t2 right join t1 on (t1.id = t2.owner) where t2.name is null;
  337. id select_type table type possible_keys key key_len ref rows Extra
  338. 1 SIMPLE t1 ALL NULL NULL NULL NULL 3
  339. 1 SIMPLE t2 ALL NULL NULL NULL NULL 3 Using where
  340. select count(*) from t2 right join t1 on (t1.id = t2.owner);
  341. count(*)
  342. 4
  343. select t1.name, t2.name, t2.id,t3.id from t2 right join t1 on (t1.id = t2.owner) left join t1 as t3 on t3.id=t2.owner;
  344. name name id id
  345. Antonio Paz El Gato 1 1
  346. Antonio Paz Perrito 2 1
  347. Lilliana Angelovska NULL NULL NULL
  348. Thimble Smith Happy 3 3
  349. select t1.name, t2.name, t2.id,t3.id from t1 right join t2 on (t1.id = t2.owner) right join t1 as t3 on t3.id=t2.owner;
  350. name name id id
  351. Antonio Paz El Gato 1 1
  352. Antonio Paz Perrito 2 1
  353. NULL NULL NULL 2
  354. Thimble Smith Happy 3 3
  355. select t1.name, t2.name, t2.id, t2.owner, t3.id from t1 left join t2 on (t1.id = t2.owner) right join t1 as t3 on t3.id=t2.owner;
  356. name name id owner id
  357. Antonio Paz El Gato 1 1 1
  358. Antonio Paz Perrito 2 1 1
  359. Lilliana Angelovska NULL NULL NULL 1
  360. Thimble Smith NULL NULL NULL 1
  361. Antonio Paz NULL NULL NULL 2
  362. Lilliana Angelovska NULL NULL NULL 2
  363. Thimble Smith NULL NULL NULL 2
  364. Antonio Paz NULL NULL NULL 3
  365. Lilliana Angelovska NULL NULL NULL 3
  366. Thimble Smith Happy 3 3 3
  367. drop table t1,t2;
  368. create table t1 (id int not null, str char(10), index(str));
  369. insert into t1 values (1, null), (2, null), (3, "foo"), (4, "bar");
  370. select * from t1 where str is not null order by id;
  371. id str
  372. 3 foo
  373. 4 bar
  374. select * from t1 where str is null;
  375. id str
  376. 1 NULL
  377. 2 NULL
  378. drop table t1;
  379. CREATE TABLE t1 (
  380. t1_id bigint(21) NOT NULL auto_increment,
  381. PRIMARY KEY (t1_id)
  382. );
  383. CREATE TABLE t2 (
  384. t2_id bigint(21) NOT NULL auto_increment,
  385. PRIMARY KEY (t2_id)
  386. );
  387. CREATE TABLE t3 (
  388. t3_id bigint(21) NOT NULL auto_increment,
  389. PRIMARY KEY (t3_id)
  390. );
  391. CREATE TABLE t4 (
  392. seq_0_id bigint(21) DEFAULT '0' NOT NULL,
  393. seq_1_id bigint(21) DEFAULT '0' NOT NULL,
  394. KEY seq_0_id (seq_0_id),
  395. KEY seq_1_id (seq_1_id)
  396. );
  397. CREATE TABLE t5 (
  398. seq_0_id bigint(21) DEFAULT '0' NOT NULL,
  399. seq_1_id bigint(21) DEFAULT '0' NOT NULL,
  400. KEY seq_1_id (seq_1_id),
  401. KEY seq_0_id (seq_0_id)
  402. );
  403. insert into t1 values (1);
  404. insert into t2 values (1);
  405. insert into t3 values (1);
  406. insert into t4 values (1,1);
  407. insert into t5 values (1,1);
  408. explain select * from t3 left join t4 on t4.seq_1_id = t2.t2_id left join t1 on t1.t1_id = t4.seq_0_id left join t5 on t5.seq_0_id = t1.t1_id left join t2 on t2.t2_id = t5.seq_1_id where t3.t3_id = 23;
  409. ERROR 42000: Cross dependency found in OUTER JOIN; examine your ON conditions
  410. drop table t1,t2,t3,t4,t5;
  411. create table t1 (n int, m int, o int, key(n));
  412. create table t2 (n int not null, m int, o int, primary key(n));
  413. insert into t1 values (1, 2, 11), (1, 2, 7), (2, 2, 8), (1,2,9),(1,3,9);
  414. insert into t2 values (1, 2, 3),(2, 2, 8), (4,3,9),(3,2,10);
  415. select t1.*, t2.* from t1 left join t2 on t1.n = t2.n and
  416. t1.m = t2.m where t1.n = 1;
  417. n m o n m o
  418. 1 2 11 1 2 3
  419. 1 2 7 1 2 3
  420. 1 2 9 1 2 3
  421. 1 3 9 NULL NULL NULL
  422. select t1.*, t2.* from t1 left join t2 on t1.n = t2.n and
  423. t1.m = t2.m where t1.n = 1 order by t1.o;
  424. n m o n m o
  425. 1 2 7 1 2 3
  426. 1 2 9 1 2 3
  427. 1 3 9 NULL NULL NULL
  428. 1 2 11 1 2 3
  429. drop table t1,t2;
  430. CREATE TABLE t1 (id1 INT NOT NULL PRIMARY KEY, dat1 CHAR(1), id2 INT);
  431. INSERT INTO t1 VALUES (1,'a',1);
  432. INSERT INTO t1 VALUES (2,'b',1);
  433. INSERT INTO t1 VALUES (3,'c',2);
  434. CREATE TABLE t2 (id2 INT NOT NULL PRIMARY KEY, dat2 CHAR(1));
  435. INSERT INTO t2 VALUES (1,'x');
  436. INSERT INTO t2 VALUES (2,'y');
  437. INSERT INTO t2 VALUES (3,'z');
  438. SELECT t2.id2 FROM t2 LEFT OUTER JOIN t1 ON t1.id2 = t2.id2 WHERE id1 IS NULL;
  439. id2
  440. 3
  441. SELECT t2.id2 FROM t2 NATURAL LEFT OUTER JOIN t1 WHERE id1 IS NULL;
  442. id2
  443. 3
  444. drop table t1,t2;
  445. create table t1 ( color varchar(20), name varchar(20) );
  446. insert into t1 values ( 'red', 'apple' );
  447. insert into t1 values ( 'yellow', 'banana' );
  448. insert into t1 values ( 'green', 'lime' );
  449. insert into t1 values ( 'black', 'grape' );
  450. insert into t1 values ( 'blue', 'blueberry' );
  451. create table t2 ( count int, color varchar(20) );
  452. insert into t2 values (10, 'green');
  453. insert into t2 values (5, 'black');
  454. insert into t2 values (15, 'white');
  455. insert into t2 values (7, 'green');
  456. select * from t1;
  457. color name
  458. red apple
  459. yellow banana
  460. green lime
  461. black grape
  462. blue blueberry
  463. select * from t2;
  464. count color
  465. 10 green
  466. 5 black
  467. 15 white
  468. 7 green
  469. select * from t2 natural join t1;
  470. count color name
  471. 10 green lime
  472. 7 green lime
  473. 5 black grape
  474. select t2.count, t1.name from t2 natural join t1;
  475. count name
  476. 10 lime
  477. 7 lime
  478. 5 grape
  479. select t2.count, t1.name from t2 inner join t1 using (color);
  480. count name
  481. 10 lime
  482. 7 lime
  483. 5 grape
  484. drop table t1;
  485. drop table t2;
  486. CREATE TABLE t1 (
  487. pcode varchar(8) DEFAULT '' NOT NULL
  488. );
  489. INSERT INTO t1 VALUES ('kvw2000'),('kvw2001'),('kvw3000'),('kvw3001'),('kvw3002'),('kvw3500'),('kvw3501'),('kvw3502'),('kvw3800'),('kvw3801'),('kvw3802'),('kvw3900'),('kvw3901'),('kvw3902'),('kvw4000'),('kvw4001'),('kvw4002'),('kvw4200'),('kvw4500'),('kvw5000'),('kvw5001'),('kvw5500'),('kvw5510'),('kvw5600'),('kvw5601'),('kvw6000'),('klw1000'),('klw1020'),('klw1500'),('klw2000'),('klw2001'),('klw2002'),('kld2000'),('klw2500'),('kmw1000'),('kmw1500'),('kmw2000'),('kmw2001'),('kmw2100'),('kmw3000'),('kmw3200');
  490. CREATE TABLE t2 (
  491. pcode varchar(8) DEFAULT '' NOT NULL,
  492. KEY pcode (pcode)
  493. );
  494. INSERT INTO t2 VALUES ('kvw2000'),('kvw2000'),('kvw2000'),('kvw2000'),('kvw2000'),('kvw2000'),('kvw2000'),('kvw2000'),('kvw2000'),('kvw2000'),('kvw2000'),('kvw2000'),('kvw2000'),('kvw2000'),('kvw2000'),('kvw2000'),('kvw2000'),('kvw2000'),('kvw2000'),('kvw2000'),('kvw2000'),('kvw2000'),('kvw2000'),('kvw2000'),('kvw2000'),('kvw2000'),('kvw3000'),('kvw3000'),('kvw3000'),('kvw3000'),('kvw3000'),('kvw3000'),('kvw3000'),('kvw3000'),('kvw3000'),('kvw3000'),('kvw3000'),('kvw3000'),('kvw3000'),('kvw3000'),('kvw3000'),('kvw3000'),('kvw3000'),('kvw3000'),('kvw3000'),('kvw3000'),('kvw3000'),('kvw3000'),('kvw3000'),('kvw3000'),('kvw3000'),('kvw3000'),('kvw3000'),('kvw3000'),('kvw3000'),('kvw3000'),('kvw3000'),('kvw3000'),('kvw3000'),('kvw3000'),('kvw3000'),('kvw3000'),('kvw3500'),('kvw3500'),('kvw3500'),('kvw3500'),('kvw3500'),('kvw3500'),('kvw3500'),('kvw3500'),('kvw3500'),('kvw3500'),('kvw3500'),('kvw3500'),('kvw3500'),('kvw3500'),('kvw3500'),('kvw3500'),('kvw3500'),('kvw3500'),('kvw3500'),('kvw3500'),('kvw3500'),('kvw3500'),('kvw3500'),('kvw3500'),('kvw3500'),('kvw3500'),('kvw6000'),('kvw6000'),('kld2000');
  495. SELECT t1.pcode, IF(ISNULL(t2.pcode), 0, COUNT(*)) AS count FROM t1
  496. LEFT JOIN t2 ON t1.pcode = t2.pcode GROUP BY t1.pcode;
  497. pcode count
  498. kld2000 1
  499. klw1000 0
  500. klw1020 0
  501. klw1500 0
  502. klw2000 0
  503. klw2001 0
  504. klw2002 0
  505. klw2500 0
  506. kmw1000 0
  507. kmw1500 0
  508. kmw2000 0
  509. kmw2001 0
  510. kmw2100 0
  511. kmw3000 0
  512. kmw3200 0
  513. kvw2000 26
  514. kvw2001 0
  515. kvw3000 36
  516. kvw3001 0
  517. kvw3002 0
  518. kvw3500 26
  519. kvw3501 0
  520. kvw3502 0
  521. kvw3800 0
  522. kvw3801 0
  523. kvw3802 0
  524. kvw3900 0
  525. kvw3901 0
  526. kvw3902 0
  527. kvw4000 0
  528. kvw4001 0
  529. kvw4002 0
  530. kvw4200 0
  531. kvw4500 0
  532. kvw5000 0
  533. kvw5001 0
  534. kvw5500 0
  535. kvw5510 0
  536. kvw5600 0
  537. kvw5601 0
  538. kvw6000 2
  539. SELECT SQL_BIG_RESULT t1.pcode, IF(ISNULL(t2.pcode), 0, COUNT(*)) AS count FROM t1 LEFT JOIN t2 ON t1.pcode = t2.pcode GROUP BY t1.pcode;
  540. pcode count
  541. kld2000 1
  542. klw1000 0
  543. klw1020 0
  544. klw1500 0
  545. klw2000 0
  546. klw2001 0
  547. klw2002 0
  548. klw2500 0
  549. kmw1000 0
  550. kmw1500 0
  551. kmw2000 0
  552. kmw2001 0
  553. kmw2100 0
  554. kmw3000 0
  555. kmw3200 0
  556. kvw2000 26
  557. kvw2001 0
  558. kvw3000 36
  559. kvw3001 0
  560. kvw3002 0
  561. kvw3500 26
  562. kvw3501 0
  563. kvw3502 0
  564. kvw3800 0
  565. kvw3801 0
  566. kvw3802 0
  567. kvw3900 0
  568. kvw3901 0
  569. kvw3902 0
  570. kvw4000 0
  571. kvw4001 0
  572. kvw4002 0
  573. kvw4200 0
  574. kvw4500 0
  575. kvw5000 0
  576. kvw5001 0
  577. kvw5500 0
  578. kvw5510 0
  579. kvw5600 0
  580. kvw5601 0
  581. kvw6000 2
  582. drop table t1,t2;
  583. CREATE TABLE t1 (
  584. id int(11),
  585. pid int(11),
  586. rep_del tinyint(4),
  587. KEY id (id),
  588. KEY pid (pid)
  589. );
  590. INSERT INTO t1 VALUES (1,NULL,NULL);
  591. INSERT INTO t1 VALUES (2,1,NULL);
  592. select * from t1 LEFT JOIN t1 t2 ON (t1.id=t2.pid) AND t2.rep_del IS NULL;
  593. id pid rep_del id pid rep_del
  594. 1 NULL NULL 2 1 NULL
  595. 2 1 NULL NULL NULL NULL
  596. create index rep_del ON t1(rep_del);
  597. select * from t1 LEFT JOIN t1 t2 ON (t1.id=t2.pid) AND t2.rep_del IS NULL;
  598. id pid rep_del id pid rep_del
  599. 1 NULL NULL 2 1 NULL
  600. 2 1 NULL NULL NULL NULL
  601. drop table t1;
  602. CREATE TABLE t1 (
  603. id int(11) DEFAULT '0' NOT NULL,
  604. name tinytext DEFAULT '' NOT NULL,
  605. UNIQUE id (id)
  606. );
  607. INSERT INTO t1 VALUES (1,'yes'),(2,'no');
  608. CREATE TABLE t2 (
  609. id int(11) DEFAULT '0' NOT NULL,
  610. idx int(11) DEFAULT '0' NOT NULL,
  611. UNIQUE id (id,idx)
  612. );
  613. INSERT INTO t2 VALUES (1,1);
  614. explain SELECT * from t1 left join t2 on t1.id=t2.id where t2.id IS NULL;
  615. id select_type table type possible_keys key key_len ref rows Extra
  616. 1 SIMPLE t1 ALL NULL NULL NULL NULL 2
  617. 1 SIMPLE t2 ref id id 4 test.t1.id 1 Using where; Using index; Not exists
  618. SELECT * from t1 left join t2 on t1.id=t2.id where t2.id IS NULL;
  619. id name id idx
  620. 2 no NULL NULL
  621. drop table t1,t2;
  622. create table t1 (bug_id mediumint, reporter mediumint);
  623. create table t2 (bug_id mediumint, who mediumint, index(who));
  624. insert into t2 values (1,1),(1,2);
  625. insert into t1 values (1,1),(2,1);
  626. SELECT * FROM t1 LEFT JOIN t2 ON (t1.bug_id =  t2.bug_id AND  t2.who = 2) WHERE  (t1.reporter = 2 OR t2.who = 2);
  627. bug_id reporter bug_id who
  628. 1 1 1 2
  629. drop table t1,t2;
  630. create table t1 (fooID smallint unsigned auto_increment, primary key (fooID));
  631. create table t2 (fooID smallint unsigned not null, barID smallint unsigned not null, primary key (fooID,barID));
  632. insert into t1 (fooID) values (10),(20),(30);
  633. insert into t2 values (10,1),(20,2),(30,3);
  634. explain select * from t2 left join t1 on t1.fooID = t2.fooID and t1.fooID = 30;
  635. id select_type table type possible_keys key key_len ref rows Extra
  636. 1 SIMPLE t2 index NULL PRIMARY 4 NULL 3 Using index
  637. 1 SIMPLE t1 const PRIMARY PRIMARY 2 const 1 Using where; Using index
  638. select * from t2 left join t1 on t1.fooID = t2.fooID and t1.fooID = 30;
  639. fooID barID fooID
  640. 10 1 NULL
  641. 20 2 NULL
  642. 30 3 30
  643. select * from t2 left join t1 ignore index(primary) on t1.fooID = t2.fooID and t1.fooID = 30;
  644. fooID barID fooID
  645. 10 1 NULL
  646. 20 2 NULL
  647. 30 3 30
  648. drop table t1,t2;
  649. create table t1 (i int);
  650. create table t2 (i int);
  651. create table t3 (i int);
  652. insert into t1 values(1),(2);
  653. insert into t2 values(2),(3);
  654. insert into t3 values(2),(4);
  655. select * from t1 natural left join t2 natural left join t3;
  656. i i i
  657. 1 NULL NULL
  658. 2 2 2
  659. drop table t1,t2,t3;
  660. create table t1 (f1 integer,f2 integer,f3 integer);
  661. create table t2 (f2 integer,f4 integer);
  662. create table t3 (f3 integer,f5 integer);
  663. select * from t1
  664. left outer join t2 using (f2)
  665. left outer join t3 using (f3);
  666. ERROR 42S22: Unknown column 'test.t2.f3' in 'on clause'
  667. drop table t1,t2,t3;
  668. create table t1 (a1 int, a2 int);
  669. create table t2 (b1 int not null, b2 int);
  670. create table t3 (c1 int, c2 int);
  671. insert into t1 values (1,2), (2,2), (3,2);
  672. insert into t2 values (1,3), (2,3);
  673. insert into t3 values (2,4),        (3,4);
  674. select * from t1 left join t2  on  b1 = a1 left join t3  on  c1 = a1  and  b1 is null;
  675. a1 a2 b1 b2 c1 c2
  676. 1 2 1 3 NULL NULL
  677. 2 2 2 3 NULL NULL
  678. 3 2 NULL NULL 3 4
  679. explain select * from t1 left join t2  on  b1 = a1 left join t3  on  c1 = a1  and  b1 is null;
  680. id select_type table type possible_keys key key_len ref rows Extra
  681. 1 SIMPLE t1 ALL NULL NULL NULL NULL 3
  682. 1 SIMPLE t2 ALL NULL NULL NULL NULL 2
  683. 1 SIMPLE t3 ALL NULL NULL NULL NULL 2
  684. drop table t1, t2, t3;
  685. create table t1 (
  686. a int(11),
  687. b char(10),
  688. key (a)
  689. );
  690. insert into t1 (a) values (1),(2),(3),(4);
  691. create table t2 (a int);
  692. select * from t1 left join t2 on t1.a=t2.a where not (t2.a <=> t1.a);
  693. a b a
  694. 1 NULL NULL
  695. 2 NULL NULL
  696. 3 NULL NULL
  697. 4 NULL NULL
  698. select * from t1 left join t2 on t1.a=t2.a having not (t2.a <=> t1.a);
  699. a b a
  700. 1 NULL NULL
  701. 2 NULL NULL
  702. 3 NULL NULL
  703. 4 NULL NULL
  704. drop table t1,t2;
  705. create table t1 (
  706. match_id tinyint(3) unsigned not null auto_increment,
  707. home tinyint(3) unsigned default '0',
  708. unique key match_id (match_id),
  709. key match_id_2 (match_id)
  710. );
  711. insert into t1 values("1", "2");
  712. create table t2 (
  713. player_id tinyint(3) unsigned default '0',
  714. match_1_h tinyint(3) unsigned default '0',
  715. key player_id (player_id)
  716. );
  717. insert into t2 values("1", "5");
  718. insert into t2 values("2", "9");
  719. insert into t2 values("3", "3");
  720. insert into t2 values("4", "7");
  721. insert into t2 values("5", "6");
  722. insert into t2 values("6", "8");
  723. insert into t2 values("7", "4");
  724. insert into t2 values("8", "12");
  725. insert into t2 values("9", "11");
  726. insert into t2 values("10", "10");
  727. explain select s.*, '*', m.*, (s.match_1_h - m.home) UUX from 
  728. (t2 s left join t1 m on m.match_id = 1) 
  729. order by m.match_id desc;
  730. id select_type table type possible_keys key key_len ref rows Extra
  731. 1 SIMPLE s ALL NULL NULL NULL NULL 10
  732. 1 SIMPLE m const match_id,match_id_2 match_id 1 const 1 Using where
  733. explain select s.*, '*', m.*, (s.match_1_h - m.home) UUX from 
  734. (t2 s left join t1 m on m.match_id = 1) 
  735. order by UUX desc;
  736. id select_type table type possible_keys key key_len ref rows Extra
  737. 1 SIMPLE s ALL NULL NULL NULL NULL 10 Using temporary; Using filesort
  738. 1 SIMPLE m const match_id,match_id_2 match_id 1 const 1 Using where
  739. select s.*, '*', m.*, (s.match_1_h - m.home) UUX from 
  740. (t2 s left join t1 m on m.match_id = 1) 
  741. order by UUX desc;
  742. player_id match_1_h * match_id home UUX
  743. 8 12 * 1 2 10
  744. 9 11 * 1 2 9
  745. 10 10 * 1 2 8
  746. 2 9 * 1 2 7
  747. 6 8 * 1 2 6
  748. 4 7 * 1 2 5
  749. 5 6 * 1 2 4
  750. 1 5 * 1 2 3
  751. 7 4 * 1 2 2
  752. 3 3 * 1 2 1
  753. explain select s.*, '*', m.*, (s.match_1_h - m.home) UUX from 
  754. t2 s straight_join t1 m where m.match_id = 1 
  755. order by UUX desc;
  756. id select_type table type possible_keys key key_len ref rows Extra
  757. 1 SIMPLE s ALL NULL NULL NULL NULL 10 Using temporary; Using filesort
  758. 1 SIMPLE m const match_id,match_id_2 match_id 1 const 1 Using where
  759. select s.*, '*', m.*, (s.match_1_h - m.home) UUX from 
  760. t2 s straight_join t1 m where m.match_id = 1 
  761. order by UUX desc;
  762. player_id match_1_h * match_id home UUX
  763. 8 12 * 1 2 10
  764. 9 11 * 1 2 9
  765. 10 10 * 1 2 8
  766. 2 9 * 1 2 7
  767. 6 8 * 1 2 6
  768. 4 7 * 1 2 5
  769. 5 6 * 1 2 4
  770. 1 5 * 1 2 3
  771. 7 4 * 1 2 2
  772. 3 3 * 1 2 1
  773. drop table t1, t2;
  774. create table t1 (a int, b int, unique index idx (a, b));
  775. create table t2 (a int, b int, c int, unique index idx (a, b));
  776. insert into t1 values (1, 10), (1,11), (2,10), (2,11);
  777. insert into t2 values (1,10,3);
  778. select t1.a, t1.b, t2.c from t1 left join t2
  779. on t1.a=t2.a and t1.b=t2.b and t2.c=3
  780. where t1.a=1 and t2.c is null;
  781. a b c
  782. 1 11 NULL
  783. drop table t1, t2;
  784. CREATE TABLE t1 (
  785. ts_id bigint(20) default NULL,
  786. inst_id tinyint(4) default NULL,
  787. flag_name varchar(64) default NULL,
  788. flag_value text,
  789. UNIQUE KEY ts_id (ts_id,inst_id,flag_name)
  790. ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
  791. CREATE TABLE t2 (
  792. ts_id bigint(20) default NULL,
  793. inst_id tinyint(4) default NULL,
  794. flag_name varchar(64) default NULL,
  795. flag_value text,
  796. UNIQUE KEY ts_id (ts_id,inst_id,flag_name)
  797. ) ENGINE=MyISAM DEFAULT CHARSET=utf8;
  798. INSERT INTO t1 VALUES
  799. (111056548820001, 0, 'flag1', NULL),
  800. (111056548820001, 0, 'flag2', NULL),
  801. (2, 0, 'other_flag', NULL);
  802. INSERT INTO t2 VALUES
  803. (111056548820001, 3, 'flag1', 'sss');
  804. SELECT t1.flag_name,t2.flag_value 
  805. FROM t1 LEFT JOIN t2 
  806. ON (t1.ts_id = t2.ts_id AND t1.flag_name = t2.flag_name AND
  807. t2.inst_id = 3) 
  808. WHERE t1.inst_id = 0 AND t1.ts_id=111056548820001 AND
  809. t2.flag_value IS  NULL;
  810. flag_name flag_value
  811. flag2 NULL
  812. DROP TABLE t1,t2;
  813. CREATE TABLE invoice (
  814. id int(11) unsigned NOT NULL auto_increment,
  815. text_id int(10) unsigned default NULL,
  816. PRIMARY KEY  (id)
  817. );
  818. INSERT INTO invoice VALUES("1", "0");
  819. INSERT INTO invoice VALUES("2", "10");
  820. CREATE TABLE text_table (
  821. text_id char(3) NOT NULL default '',
  822. language_id char(3) NOT NULL default '',
  823. text_data text,
  824. PRIMARY KEY  (text_id,language_id)
  825. );
  826. INSERT INTO text_table VALUES("0", "EN", "0-EN");
  827. INSERT INTO text_table VALUES("0", "SV", "0-SV");
  828. INSERT INTO text_table VALUES("10", "EN", "10-EN");
  829. INSERT INTO text_table VALUES("10", "SV", "10-SV");
  830. SELECT invoice.id, invoice.text_id, text_table.text_data
  831. FROM invoice LEFT JOIN text_table
  832. ON invoice.text_id = text_table.text_id
  833. AND text_table.language_id = 'SV'
  834.   WHERE (invoice.id LIKE '%' OR text_table.text_data LIKE '%');
  835. id text_id text_data
  836. 1 0 0-SV
  837. 2 10 10-SV
  838. DROP TABLE invoice, text_table;
  839. CREATE TABLE t1 (a int PRIMARY KEY, b int);
  840. CREATE TABLE t2 (a int PRIMARY KEY, b int);
  841. INSERT INTO t1 VALUES (1,1), (2,1), (3,1), (4,2);
  842. INSERT INTO t2 VALUES (1,2), (2,2);
  843. SELECT * FROM t1 LEFT JOIN t2 ON t1.a=t2.a;
  844. a b a b
  845. 1 1 1 2
  846. 2 1 2 2
  847. 3 1 NULL NULL
  848. 4 2 NULL NULL
  849. SELECT * FROM t1 LEFT JOIN t2 ON t1.a=t2.a WHERE t1.b=1;
  850. a b a b
  851. 1 1 1 2
  852. 2 1 2 2
  853. 3 1 NULL NULL
  854. SELECT * FROM t1 LEFT JOIN t2 ON t1.a=t2.a
  855. WHERE t1.b=1 XOR (NOT ISNULL(t2.a) AND t2.b=1);
  856. a b a b
  857. 1 1 1 2
  858. 2 1 2 2
  859. 3 1 NULL NULL
  860. SELECT * FROM t1 LEFT JOIN t2 ON t1.a=t2.a WHERE not(0+(t1.a=30 and t2.b=1));
  861. a b a b
  862. 1 1 1 2
  863. 2 1 2 2
  864. 3 1 NULL NULL
  865. 4 2 NULL NULL
  866. DROP TABLE t1,t2;
  867. set group_concat_max_len=5;
  868. create table t1 (a int, b varchar(20));
  869. create table t2 (a int, c varchar(20));
  870. insert into t1 values (1,"aaaaaaaaaa"),(2,"bbbbbbbbbb");
  871. insert into t2 values (1,"cccccccccc"),(2,"dddddddddd");
  872. select group_concat(t1.b,t2.c) from t1 left join t2 using(a) group by t1.a;
  873. group_concat(t1.b,t2.c)
  874. aaaaa
  875. bbbbb
  876. Warnings:
  877. Warning 1260 2 line(s) were cut by GROUP_CONCAT()
  878. select group_concat(t1.b,t2.c) from t1 inner join t2 using(a) group by t1.a;
  879. group_concat(t1.b,t2.c)
  880. aaaaa
  881. bbbbb
  882. Warnings:
  883. Warning 1260 2 line(s) were cut by GROUP_CONCAT()
  884. drop table t1, t2;
  885. set group_concat_max_len=default;
  886. CREATE TABLE t1 (a int PRIMARY KEY, b int);
  887. CREATE TABLE t2 (a int PRIMARY KEY, b int);
  888. INSERT INTO t1 VALUES (1,2), (2,1), (3,2), (4,3), (5,6), (6,5), (7,8), (8,7), (9,10);
  889. INSERT INTO t2 VALUES (3,0), (4,1), (6,4), (7,5);
  890. SELECT * FROM t1 LEFT JOIN t2 ON t1.a = t2.a WHERE t2.b <= t1.a AND t1.a <= t1.b;
  891. a b a b
  892. 7 8 7 5
  893. SELECT * FROM t1 LEFT JOIN t2 ON t1.a = t2.a WHERE t1.a BETWEEN t2.b AND t1.b;
  894. a b a b
  895. 7 8 7 5
  896. SELECT * FROM t1 LEFT JOIN t2 ON t1.a = t2.a WHERE NOT(t1.a NOT BETWEEN t2.b AND t1.b);
  897. a b a b
  898. 7 8 7 5
  899. SELECT * FROM t1 LEFT JOIN t2 ON t1.a = t2.a WHERE t2.b > t1.a OR t1.a > t1.b;
  900. a b a b
  901. 2 1 NULL NULL
  902. 3 2 3 0
  903. 4 3 4 1
  904. 6 5 6 4
  905. 8 7 NULL NULL
  906. SELECT * FROM t1 LEFT JOIN t2 ON t1.a = t2.a WHERE t1.a NOT BETWEEN t2.b AND t1.b;
  907. a b a b
  908. 2 1 NULL NULL
  909. 3 2 3 0
  910. 4 3 4 1
  911. 6 5 6 4
  912. 8 7 NULL NULL
  913. SELECT * FROM t1 LEFT JOIN t2 ON t1.a = t2.a WHERE NOT(t1.a BETWEEN t2.b AND t1.b);
  914. a b a b
  915. 2 1 NULL NULL
  916. 3 2 3 0
  917. 4 3 4 1
  918. 6 5 6 4
  919. 8 7 NULL NULL
  920. SELECT * FROM t1 LEFT JOIN t2 ON t1.a = t2.a WHERE t1.a = t2.a OR t2.b > t1.a OR t1.a > t1.b;
  921. a b a b
  922. 2 1 NULL NULL
  923. 3 2 3 0
  924. 4 3 4 1
  925. 6 5 6 4
  926. 7 8 7 5
  927. 8 7 NULL NULL
  928. SELECT * FROM t1 LEFT JOIN t2 ON t1.a = t2.a WHERE NOT(t1.a != t2.a AND t1.a BETWEEN t2.b AND t1.b);
  929. a b a b
  930. 2 1 NULL NULL
  931. 3 2 3 0
  932. 4 3 4 1
  933. 6 5 6 4
  934. 7 8 7 5
  935. 8 7 NULL NULL
  936. SELECT * FROM t1 LEFT JOIN t2 ON t1.a = t2.a WHERE t1.a = t2.a AND (t2.b > t1.a OR t1.a > t1.b);
  937. a b a b
  938. 3 2 3 0
  939. 4 3 4 1
  940. 6 5 6 4
  941. SELECT * FROM t1 LEFT JOIN t2 ON t1.a = t2.a WHERE NOT(t1.a != t2.a OR t1.a BETWEEN t2.b AND t1.b);
  942. a b a b
  943. 3 2 3 0
  944. 4 3 4 1
  945. 6 5 6 4
  946. SELECT * FROM t1 LEFT JOIN t2 ON t1.a = t2.a WHERE t1.a = t2.a OR t1.a = t2.b;
  947. a b a b
  948. 3 2 3 0
  949. 4 3 4 1
  950. 6 5 6 4
  951. 7 8 7 5
  952. SELECT * FROM t1 LEFT JOIN t2 ON t1.a = t2.a WHERE t1.a IN(t2.a, t2.b);
  953. a b a b
  954. 3 2 3 0
  955. 4 3 4 1
  956. 6 5 6 4
  957. 7 8 7 5
  958. SELECT * FROM t1 LEFT JOIN t2 ON t1.a = t2.a WHERE NOT(t1.a NOT IN(t2.a, t2.b));
  959. a b a b
  960. 3 2 3 0
  961. 4 3 4 1
  962. 6 5 6 4
  963. 7 8 7 5
  964. SELECT * FROM t1 LEFT JOIN t2 ON t1.a = t2.a WHERE t1.a != t1.b AND t1.a != t2.b;
  965. a b a b
  966. 3 2 3 0
  967. 4 3 4 1
  968. 6 5 6 4
  969. 7 8 7 5
  970. SELECT * FROM t1 LEFT JOIN t2 ON t1.a = t2.a WHERE t1.a NOT IN(t1.b, t2.b);
  971. a b a b
  972. 3 2 3 0
  973. 4 3 4 1
  974. 6 5 6 4
  975. 7 8 7 5
  976. SELECT * FROM t1 LEFT JOIN t2 ON t1.a = t2.a WHERE NOT(t1.a IN(t1.b, t2.b));
  977. a b a b
  978. 3 2 3 0
  979. 4 3 4 1
  980. 6 5 6 4
  981. 7 8 7 5
  982. SELECT * FROM t1 LEFT JOIN t2 ON t1.a = t2.a WHERE t2.a != t2.b OR (t1.a != t2.a AND t1.a != t2.b);
  983. a b a b
  984. 3 2 3 0
  985. 4 3 4 1
  986. 6 5 6 4
  987. 7 8 7 5
  988. SELECT * FROM t1 LEFT JOIN t2 ON t1.a = t2.a WHERE NOT(t2.a = t2.b AND t1.a IN(t2.a, t2.b));
  989. a b a b
  990. 3 2 3 0
  991. 4 3 4 1
  992. 6 5 6 4
  993. 7 8 7 5
  994. SELECT * FROM t1 LEFT JOIN t2 ON t1.a = t2.a WHERE t2.a != t2.b AND t1.a != t1.b AND t1.a != t2.b;
  995. a b a b
  996. 3 2 3 0
  997. 4 3 4 1
  998. 6 5 6 4
  999. 7 8 7 5
  1000. SELECT * FROM t1 LEFT JOIN t2 ON t1.a = t2.a WHERE NOT(t2.a = t2.b OR t1.a IN(t1.b, t2.b));
  1001. a b a b
  1002. 3 2 3 0
  1003. 4 3 4 1
  1004. 6 5 6 4
  1005. 7 8 7 5
  1006. EXPLAIN SELECT * FROM t1 LEFT JOIN t2 ON t1.a = t2.a WHERE t1.a = t2.a OR t1.a = t2.b;
  1007. id select_type table type possible_keys key key_len ref rows Extra
  1008. 1 SIMPLE t2 ALL PRIMARY NULL NULL NULL 4
  1009. 1 SIMPLE t1 eq_ref PRIMARY PRIMARY 4 test.t2.a 1
  1010. EXPLAIN SELECT * FROM t1 LEFT JOIN t2 ON t1.a = t2.a WHERE t1.a IN(t2.a, t2.b);
  1011. id select_type table type possible_keys key key_len ref rows Extra
  1012. 1 SIMPLE t2 ALL PRIMARY NULL NULL NULL 4
  1013. 1 SIMPLE t1 eq_ref PRIMARY PRIMARY 4 test.t2.a 1 Using where
  1014. EXPLAIN SELECT * FROM t1 LEFT JOIN t2 ON t1.a = t2.a WHERE t1.a > IF(t1.a = t2.b-2, t2.b, t2.b-1);
  1015. id select_type table type possible_keys key key_len ref rows Extra
  1016. 1 SIMPLE t2 ALL PRIMARY NULL NULL NULL 4
  1017. 1 SIMPLE t1 eq_ref PRIMARY PRIMARY 4 test.t2.a 1 Using where
  1018. DROP TABLE t1,t2;