1
drop table if exists t1,t2,t3;
2
CREATE TABLE t1 (S1 INT);
3
CREATE TABLE t2 (S1 INT);
4
INSERT INTO t1 VALUES (1);
5
INSERT INTO t2 VALUES (2);
6
SELECT * FROM t1 JOIN t2;
9
SELECT * FROM t1 INNER JOIN t2;
12
SELECT * from t1 JOIN t2 USING (S1);
14
SELECT * FROM t1 INNER JOIN t2 USING (S1);
16
SELECT * from t1 CROSS JOIN t2;
19
SELECT * from t1 LEFT JOIN t2 USING(S1);
22
SELECT * from t1 LEFT JOIN t2 ON(t2.S1=2);
25
SELECT * from t1 RIGHT JOIN t2 USING(S1);
28
SELECT * from t1 RIGHT JOIN t2 ON(t1.S1=1);
32
create table t1 (id int primary key);
33
create table t2 (id int);
34
insert into t1 values (75);
35
insert into t1 values (79);
36
insert into t1 values (78);
37
insert into t1 values (77);
38
replace into t1 values (76);
39
replace into t1 values (76);
40
insert into t1 values (104);
41
insert into t1 values (103);
42
insert into t1 values (102);
43
insert into t1 values (101);
44
insert into t1 values (105);
45
insert into t1 values (106);
46
insert into t1 values (107);
47
insert into t2 values (107),(75),(1000);
48
select t1.id, t2.id from t1, t2 where t2.id = t1.id;
52
select t1.id, count(t2.id) from t1,t2 where t2.id = t1.id group by t1.id;
56
select t1.id, count(t2.id) from t1,t2 where t2.id = t1.id group by t2.id;
60
select t1.id,t2.id from t2 left join t1 on t1.id>=74 and t1.id<=0 where t2.id=75 and t1.id is null;
63
explain select t1.id,t2.id from t2 left join t1 on t1.id>=74 and t1.id<=0 where t2.id=75 and t1.id is null;
64
id select_type table type possible_keys key key_len ref rows Extra
65
1 SIMPLE t2 ALL NULL NULL NULL NULL 3 Using where
66
1 SIMPLE t1 ALL PRIMARY NULL NULL NULL 12 Using where; Not exists
67
explain select t1.id, t2.id from t1, t2 where t2.id = t1.id and t1.id <0 and t1.id > 0;
68
id select_type table type possible_keys key key_len ref rows Extra
69
1 SIMPLE t2 ALL NULL NULL NULL NULL 3 Using where
70
1 SIMPLE t1 eq_ref PRIMARY PRIMARY 4 test.t2.id 1
73
id int NOT NULL auto_increment,
74
token varchar(100) DEFAULT '' NOT NULL,
75
count int DEFAULT '0' NOT NULL,
77
phone char(1) DEFAULT '' NOT NULL,
80
KEY token (token(15)),
81
KEY timestamp (timestamp),
82
UNIQUE token_2 (token(75),count,phone)
84
INSERT INTO t1 VALUES (21,'e45703b64de71482360de8fec94c3ade',3,7800,'n','1999-12-23 17:22:21');
85
INSERT INTO t1 VALUES (22,'e45703b64de71482360de8fec94c3ade',4,5000,'y','1999-12-23 17:22:21');
86
INSERT INTO t1 VALUES (18,'346d1cb63c89285b2351f0ca4de40eda',3,13200,'b','1999-12-23 11:58:04');
87
INSERT INTO t1 VALUES (17,'ca6ddeb689e1b48a04146b1b5b6f936a',4,15000,'b','1999-12-23 11:36:53');
88
INSERT INTO t1 VALUES (16,'ca6ddeb689e1b48a04146b1b5b6f936a',3,13200,'b','1999-12-23 11:36:53');
89
INSERT INTO t1 VALUES (26,'a71250b7ed780f6ef3185bfffe027983',5,1500,'b','1999-12-27 09:44:24');
90
INSERT INTO t1 VALUES (24,'4d75906f3c37ecff478a1eb56637aa09',3,5400,'y','1999-12-23 17:29:12');
91
INSERT INTO t1 VALUES (25,'4d75906f3c37ecff478a1eb56637aa09',4,6500,'y','1999-12-23 17:29:12');
92
INSERT INTO t1 VALUES (27,'a71250b7ed780f6ef3185bfffe027983',3,6200,'b','1999-12-27 09:44:24');
93
INSERT INTO t1 VALUES (28,'a71250b7ed780f6ef3185bfffe027983',3,5400,'y','1999-12-27 09:44:36');
94
INSERT INTO t1 VALUES (29,'a71250b7ed780f6ef3185bfffe027983',4,17700,'b','1999-12-27 09:45:05');
96
id int NOT NULL auto_increment,
97
category int DEFAULT '0' NOT NULL,
98
county int DEFAULT '0' NOT NULL,
99
state int DEFAULT '0' NOT NULL,
100
phones int DEFAULT '0' NOT NULL,
101
nophones int DEFAULT '0' NOT NULL,
103
KEY category (category,county,state)
105
INSERT INTO t2 VALUES (3,2,11,12,5400,7800);
106
INSERT INTO t2 VALUES (4,2,25,12,6500,11200);
107
INSERT INTO t2 VALUES (5,1,37,6,10000,12000);
108
select a.id, b.category as catid, b.state as stateid, b.county as countyid from t1 a, t2 b ignore index (primary) where (a.token ='a71250b7ed780f6ef3185bfffe027983') and (a.count = b.id);
109
id catid stateid countyid
114
select a.id, b.category as catid, b.state as stateid, b.county as
115
countyid from t1 a, t2 b where (a.token =
116
'a71250b7ed780f6ef3185bfffe027983') and (a.count = b.id) order by a.id;
117
id catid stateid countyid
123
create table t1 (a int primary key);
124
insert into t1 values(1),(2);
125
select t1.a from t1 as t1 left join t1 as t2 using (a) left join t1 as t3 using (a) left join t1 as t4 using (a) left join t1 as t5 using (a) left join t1 as t6 using (a) left join t1 as t7 using (a) left join t1 as t8 using (a) left join t1 as t9 using (a) left join t1 as t10 using (a) left join t1 as t11 using (a) left join t1 as t12 using (a) left join t1 as t13 using (a) left join t1 as t14 using (a) left join t1 as t15 using (a) left join t1 as t16 using (a) left join t1 as t17 using (a) left join t1 as t18 using (a) left join t1 as t19 using (a) left join t1 as t20 using (a) left join t1 as t21 using (a) left join t1 as t22 using (a) left join t1 as t23 using (a) left join t1 as t24 using (a) left join t1 as t25 using (a) left join t1 as t26 using (a) left join t1 as t27 using (a) left join t1 as t28 using (a) left join t1 as t29 using (a) left join t1 as t30 using (a) left join t1 as t31 using (a);
129
select t1.a from t1 as t1 left join t1 as t2 using (a) left join t1 as t3 using (a) left join t1 as t4 using (a) left join t1 as t5 using (a) left join t1 as t6 using (a) left join t1 as t7 using (a) left join t1 as t8 using (a) left join t1 as t9 using (a) left join t1 as t10 using (a) left join t1 as t11 using (a) left join t1 as t12 using (a) left join t1 as t13 using (a) left join t1 as t14 using (a) left join t1 as t15 using (a) left join t1 as t16 using (a) left join t1 as t17 using (a) left join t1 as t18 using (a) left join t1 as t19 using (a) left join t1 as t20 using (a) left join t1 as t21 using (a) left join t1 as t22 using (a) left join t1 as t23 using (a) left join t1 as t24 using (a) left join t1 as t25 using (a) left join t1 as t26 using (a) left join t1 as t27 using (a) left join t1 as t28 using (a) left join t1 as t29 using (a) left join t1 as t30 using (a) left join t1 as t31 using (a) left join t1 as t32 using (a) left join t1 as t33 using (a) left join t1 as t34 using (a) left join t1 as t35 using (a) left join t1 as t36 using (a) left join t1 as t37 using (a) left join t1 as t38 using (a) left join t1 as t39 using (a) left join t1 as t40 using (a) left join t1 as t41 using (a) left join t1 as t42 using (a) left join t1 as t43 using (a) left join t1 as t44 using (a) left join t1 as t45 using (a) left join t1 as t46 using (a) left join t1 as t47 using (a) left join t1 as t48 using (a) left join t1 as t49 using (a) left join t1 as t50 using (a) left join t1 as t51 using (a) left join t1 as t52 using (a) left join t1 as t53 using (a) left join t1 as t54 using (a) left join t1 as t55 using (a) left join t1 as t56 using (a) left join t1 as t57 using (a) left join t1 as t58 using (a) left join t1 as t59 using (a) left join t1 as t60 using (a) left join t1 as t61 using (a) left join t1 as t62 using (a) left join t1 as t63 using (a) left join t1 as t64 using (a) left join t1 as t65 using (a);
130
ERROR HY000: Too many tables; Drizzle can only use XX tables in a join
131
select a from t1 as t1 left join t1 as t2 using (a) left join t1 as t3 using (a) left join t1 as t4 using (a) left join t1 as t5 using (a) left join t1 as t6 using (a) left join t1 as t7 using (a) left join t1 as t8 using (a) left join t1 as t9 using (a) left join t1 as t10 using (a) left join t1 as t11 using (a) left join t1 as t12 using (a) left join t1 as t13 using (a) left join t1 as t14 using (a) left join t1 as t15 using (a) left join t1 as t16 using (a) left join t1 as t17 using (a) left join t1 as t18 using (a) left join t1 as t19 using (a) left join t1 as t20 using (a) left join t1 as t21 using (a) left join t1 as t22 using (a) left join t1 as t23 using (a) left join t1 as t24 using (a) left join t1 as t25 using (a) left join t1 as t26 using (a) left join t1 as t27 using (a) left join t1 as t28 using (a) left join t1 as t29 using (a) left join t1 as t30 using (a) left join t1 as t31 using (a);
135
select a from t1 as t1 left join t1 as t2 using (a) left join t1 as t3 using (a) left join t1 as t4 using (a) left join t1 as t5 using (a) left join t1 as t6 using (a) left join t1 as t7 using (a) left join t1 as t8 using (a) left join t1 as t9 using (a) left join t1 as t10 using (a) left join t1 as t11 using (a) left join t1 as t12 using (a) left join t1 as t13 using (a) left join t1 as t14 using (a) left join t1 as t15 using (a) left join t1 as t16 using (a) left join t1 as t17 using (a) left join t1 as t18 using (a) left join t1 as t19 using (a) left join t1 as t20 using (a) left join t1 as t21 using (a) left join t1 as t22 using (a) left join t1 as t23 using (a) left join t1 as t24 using (a) left join t1 as t25 using (a) left join t1 as t26 using (a) left join t1 as t27 using (a) left join t1 as t28 using (a) left join t1 as t29 using (a) left join t1 as t30 using (a) left join t1 as t31 using (a) left join t1 as t32 using (a) left join t1 as t33 using (a) left join t1 as t34 using (a) left join t1 as t35 using (a) left join t1 as t36 using (a) left join t1 as t37 using (a) left join t1 as t38 using (a) left join t1 as t39 using (a) left join t1 as t40 using (a) left join t1 as t41 using (a) left join t1 as t42 using (a) left join t1 as t43 using (a) left join t1 as t44 using (a) left join t1 as t45 using (a) left join t1 as t46 using (a) left join t1 as t47 using (a) left join t1 as t48 using (a) left join t1 as t49 using (a) left join t1 as t50 using (a) left join t1 as t51 using (a) left join t1 as t52 using (a) left join t1 as t53 using (a) left join t1 as t54 using (a) left join t1 as t55 using (a) left join t1 as t56 using (a) left join t1 as t57 using (a) left join t1 as t58 using (a) left join t1 as t59 using (a) left join t1 as t60 using (a) left join t1 as t61 using (a) left join t1 as t62 using (a) left join t1 as t63 using (a) left join t1 as t64 using (a) left join t1 as t65 using (a);
136
ERROR HY000: Too many tables; Drizzle can only use XX tables in a join
138
CREATE TEMPORARY TABLE t1 (
143
INSERT INTO t1 VALUES (1,1),(1,2),(1,3),(1,4),(1,5),(1,6),(1,7),(2,3);
144
CREATE TEMPORARY TABLE t2 (
147
INSERT INTO t2 VALUES (2),(3);
148
SELECT t1.a,t2.a,b FROM t1,t2 WHERE t1.a=t2.a AND (t1.a=1 OR t1.a=2) AND b>=1 AND b<=3;
152
CREATE TABLE t1 (d DATE);
153
CREATE TABLE t2 (d DATE);
154
INSERT INTO t1 (d) VALUES ('2001-08-01'),(NULL);
155
SELECT * FROM t1 LEFT JOIN t2 USING (d) WHERE t2.d IS NULL;
159
SELECT * FROM t1 LEFT JOIN t2 USING (d) WHERE d IS NULL;
162
SELECT * from t1 WHERE t1.d IS NULL;
165
SELECT * FROM t1 WHERE 1/0 IS NULL;
170
Error 1365 Division by 0
171
Error 1365 Division by 0
172
Error 1365 Division by 0
175
Document_ID varchar(50) NOT NULL default '',
176
Contractor_ID varchar(6) NOT NULL default '',
177
Language_ID char(3) NOT NULL default '',
178
Expiration_Date datetime default NULL,
179
Publishing_Date datetime default NULL,
181
Column_ID varchar(50) NOT NULL default '',
182
PRIMARY KEY (Language_ID,Document_ID,Contractor_ID)
184
INSERT INTO t1 VALUES ('xep80','1','ger','2001-12-31 20:00:00','2001-11-12 10:58:00','Kartenbestellung - jetzt auch online','anle'),('','999998','',NULL,NULL,NULL,'');
186
Contractor_ID char(6) NOT NULL default '',
187
Language_ID char(3) NOT NULL default '',
188
Document_ID char(50) NOT NULL default '',
189
CanRead char(1) default NULL,
190
Customer_ID int NOT NULL default '0',
191
PRIMARY KEY (Contractor_ID,Language_ID,Document_ID,Customer_ID)
193
INSERT INTO t2 VALUES ('5','ger','xep80','1',999999),('1','ger','xep80','1',999999);
195
Language_ID char(3) NOT NULL default '',
196
Column_ID char(50) NOT NULL default '',
197
Contractor_ID char(6) NOT NULL default '',
198
CanRead char(1) default NULL,
199
Active char(1) default NULL,
200
PRIMARY KEY (Language_ID,Column_ID,Contractor_ID)
202
INSERT INTO t3 VALUES ('ger','home','1','1','1'),('ger','Test','1','0','0'),('ger','derclu','1','0','0'),('ger','clubne','1','0','0'),('ger','philos','1','0','0'),('ger','clubko','1','0','0'),('ger','clubim','1','1','1'),('ger','progra','1','0','0'),('ger','progvo','1','0','0'),('ger','progsp','1','0','0'),('ger','progau','1','0','0'),('ger','progku','1','0','0'),('ger','progss','1','0','0'),('ger','nachl','1','0','0'),('ger','mitgli','1','0','0'),('ger','mitsu','1','0','0'),('ger','mitbus','1','0','0'),('ger','ergmar','1','1','1'),('ger','home','4','1','1'),('ger','derclu','4','1','1'),('ger','clubne','4','0','0'),('ger','philos','4','1','1'),('ger','clubko','4','1','1'),('ger','clubim','4','1','1'),('ger','progra','4','1','1'),('ger','progvo','4','1','1'),('ger','progsp','4','1','1'),('ger','progau','4','0','0'),('ger','progku','4','1','1'),('ger','progss','4','1','1'),('ger','nachl','4','1','1'),('ger','mitgli','4','0','0'),('ger','mitsu','4','0','0'),('ger','mitbus','4','0','0'),('ger','ergmar','4','1','1'),('ger','progra2','1','0','0'),('ger','archiv','4','1','1'),('ger','anmeld','4','1','1'),('ger','thema','4','1','1'),('ger','edito','4','1','1'),('ger','madis','4','1','1'),('ger','enma','4','1','1'),('ger','madis','1','1','1'),('ger','enma','1','1','1'),('ger','vorsch','4','0','0'),('ger','veranst','4','0','0'),('ger','anle','4','1','1'),('ger','redak','4','1','1'),('ger','nele','4','1','1'),('ger','aukt','4','1','1'),('ger','callcenter','4','1','1'),('ger','anle','1','0','0');
203
delete from t1 where Contractor_ID='999998';
204
insert into t1 (Contractor_ID) Values ('999998');
205
SELECT DISTINCT COUNT(t1.Title) FROM t1,
207
t1.Document_ID='xep80' AND t1.Contractor_ID='1' AND
208
t1.Language_ID='ger' AND '2001-12-21 23:14:24' >=
209
Publishing_Date AND '2001-12-21 23:14:24' <= Expiration_Date AND
210
t1.Document_ID = t2.Document_ID AND
211
t1.Language_ID = t2.Language_ID AND
212
t1.Contractor_ID = t2.Contractor_ID AND (
213
t2.Customer_ID = '4' OR
214
t2.Customer_ID = '999999' OR
215
t2.Customer_ID = '1' )AND t2.CanRead
216
= '1' AND t1.Column_ID=t3.Column_ID AND
217
t1.Language_ID=t3.Language_ID AND (
218
t3.Contractor_ID = '4' OR
219
t3.Contractor_ID = '999999' OR
220
t3.Contractor_ID = '1') AND
221
t3.CanRead='1' AND t3.Active='1';
224
SELECT DISTINCT COUNT(t1.Title) FROM t1,
226
t1.Document_ID='xep80' AND t1.Contractor_ID='1' AND
227
t1.Language_ID='ger' AND '2001-12-21 23:14:24' >=
228
Publishing_Date AND '2001-12-21 23:14:24' <= Expiration_Date AND
229
t1.Document_ID = t2.Document_ID AND
230
t1.Language_ID = t2.Language_ID AND
231
t1.Contractor_ID = t2.Contractor_ID AND (
232
t2.Customer_ID = '4' OR
233
t2.Customer_ID = '999999' OR
234
t2.Customer_ID = '1' )AND t2.CanRead
235
= '1' AND t1.Column_ID=t3.Column_ID AND
236
t1.Language_ID=t3.Language_ID AND (
237
t3.Contractor_ID = '4' OR
238
t3.Contractor_ID = '999999' OR
239
t3.Contractor_ID = '1') AND
240
t3.CanRead='1' AND t3.Active='1';
244
CREATE TEMPORARY TABLE t1 (
245
t1_id int default NULL,
246
t2_id int default NULL,
247
type enum('Cost','Percent') default NULL,
248
cost_unit enum('Cost','Unit') default NULL,
249
min_value double default NULL,
250
max_value double default NULL,
251
t3_id int default NULL,
252
item_id int default NULL
254
INSERT INTO t1 VALUES (12,5,'Percent','Cost',-1,0,-1,-1),(14,4,'Percent','Cost',-1,0,-1,-1),(18,5,'Percent','Cost',-1,0,-1,-1),(19,4,'Percent','Cost',-1,0,-1,-1),(20,5,'Percent','Cost',100,-1,22,291),(21,5,'Percent','Cost',100,-1,18,291),(22,1,'Percent','Cost',100,-1,6,291),(23,1,'Percent','Cost',100,-1,21,291),(24,1,'Percent','Cost',100,-1,9,291),(25,1,'Percent','Cost',100,-1,4,291),(26,1,'Percent','Cost',100,-1,20,291),(27,4,'Percent','Cost',100,-1,7,202),(28,1,'Percent','Cost',50,-1,-1,137),(29,2,'Percent','Cost',100,-1,4,354),(30,2,'Percent','Cost',100,-1,9,137),(93,2,'Cost','Cost',-1,10000000,-1,-1);
255
CREATE TEMPORARY TABLE t2 (
256
id int NOT NULL auto_increment,
257
name varchar(255) default NULL,
260
INSERT INTO t2 VALUES (1,'s1'),(2,'s2'),(3,'s3'),(4,'s4'),(5,'s5');
261
select t1.*, t2.* from t1, t2 where t2.id=t1.t2_id limit 2;
262
t1_id t2_id type cost_unit min_value max_value t3_id item_id id name
263
22 1 Percent Cost 100 -1 6 291 1 s1
264
23 1 Percent Cost 100 -1 21 291 1 s1
266
CREATE TEMPORARY TABLE t1 (
267
siteid varchar(25) NOT NULL default '',
268
emp_id varchar(30) NOT NULL default '',
269
rate_code varchar(10) default NULL,
270
UNIQUE KEY site_emp (siteid,emp_id),
273
INSERT INTO t1 VALUES ('rivercats','psmith','cust'), ('rivercats','KWalker','cust');
274
CREATE TEMPORARY TABLE t2 (
275
siteid varchar(25) NOT NULL default '',
276
rate_code varchar(10) NOT NULL default '',
277
base_rate float NOT NULL default '0',
278
PRIMARY KEY (siteid,rate_code)
280
INSERT INTO t2 VALUES ('rivercats','cust',20);
281
SELECT emp.rate_code, lr.base_rate FROM t1 AS emp LEFT JOIN t2 AS lr USING (siteid, rate_code) WHERE emp.emp_id = 'psmith' AND lr.siteid = 'rivercats';
284
SELECT emp.rate_code, lr.base_rate FROM t1 AS emp LEFT JOIN t2 AS lr USING (siteid, rate_code) WHERE lr.siteid = 'rivercats' AND emp.emp_id = 'psmith';
287
SELECT rate_code, lr.base_rate FROM t1 AS emp LEFT JOIN t2 AS lr USING (siteid, rate_code) WHERE emp.emp_id = 'psmith' AND siteid = 'rivercats';
290
SELECT rate_code, lr.base_rate FROM t1 AS emp LEFT JOIN t2 AS lr USING (siteid, rate_code) WHERE siteid = 'rivercats' AND emp.emp_id = 'psmith';
294
CREATE TABLE t1 (ID INTEGER NOT NULL PRIMARY KEY, Value1 VARCHAR(255));
295
CREATE TABLE t2 (ID INTEGER NOT NULL PRIMARY KEY, Value2 VARCHAR(255));
296
INSERT INTO t1 VALUES (1, 'A');
297
INSERT INTO t2 VALUES (1, 'B');
298
SELECT * FROM t1 NATURAL JOIN t2 WHERE 1 AND (Value1 = 'A' AND Value2 <> 'B');
300
SELECT * FROM t1 NATURAL JOIN t2 WHERE 1 AND Value1 = 'A' AND Value2 <> 'B';
302
SELECT * FROM t1 NATURAL JOIN t2 WHERE (Value1 = 'A' AND Value2 <> 'B') AND 1;
305
CREATE TABLE t1 (a int);
306
CREATE TABLE t2 (b int);
307
CREATE TABLE t3 (c int);
308
SELECT * FROM t1 NATURAL JOIN t2 NATURAL JOIN t3;
310
DROP TABLE t1, t2, t3;
311
create table t1 (i int);
312
create table t2 (i int);
313
create table t3 (i int);
314
insert into t1 values(1),(2);
315
insert into t2 values(2),(3);
316
insert into t3 values (2),(4);
317
select * from t1 natural left join t2;
321
select * from t1 left join t2 on (t1.i=t2.i);
325
select * from t1 natural left join t2 natural left join t3;
329
select * from t1 left join t2 on (t1.i=t2.i) left join t3 on (t2.i=t3.i);
333
select * from t3 natural right join t2;
337
select * from t3 right join t2 on (t3.i=t2.i);
341
select * from t3 natural right join t2 natural right join t1;
345
select * from t3 right join t2 on (t3.i=t2.i) right join t1 on (t2.i=t1.i);
349
select * from t1,t2 natural left join t3 order by t1.i,t2.i,t3.i;
355
select * from t1,t2 left join t3 on (t2.i=t3.i) order by t1.i,t2.i,t3.i;
361
select t1.i,t2.i,t3.i from t2 natural left join t3,t1 order by t1.i,t2.i,t3.i;
367
select t1.i,t2.i,t3.i from t2 left join t3 on (t2.i=t3.i),t1 order by t1.i,t2.i,t3.i;
373
select * from t1,t2 natural right join t3 order by t1.i,t2.i,t3.i;
379
select * from t1,t2 right join t3 on (t2.i=t3.i) order by t1.i,t2.i,t3.i;
385
select t1.i,t2.i,t3.i from t2 natural right join t3,t1 order by t1.i,t2.i,t3.i;
391
select t1.i,t2.i,t3.i from t2 right join t3 on (t2.i=t3.i),t1 order by t1.i,t2.i,t3.i;
398
CREATE TABLE t1 (a int, b int default 0, c int default 1);
399
INSERT INTO t1 (a) VALUES (1),(2),(3),(4),(5),(6),(7),(8);
400
INSERT INTO t1 (a) SELECT a + 8 FROM t1;
401
INSERT INTO t1 (a) SELECT a + 16 FROM t1;
402
CREATE TABLE t2 (a int, d int, e int default 0);
403
INSERT INTO t2 (a, d) VALUES (1,1),(2,2),(3,3),(4,4);
404
INSERT INTO t2 (a, d) SELECT a+4, a+4 FROM t2;
405
INSERT INTO t2 (a, d) SELECT a+8, a+8 FROM t2;
407
SELECT STRAIGHT_JOIN t2.e FROM t1,t2 WHERE t2.d=1 AND t1.b=t2.e
409
id select_type table type possible_keys key key_len ref rows Extra
410
1 SIMPLE t1 ALL NULL NULL NULL NULL 32 Using temporary; Using filesort
411
1 SIMPLE t2 ALL NULL NULL NULL NULL 16 Using where; Using join buffer
412
SELECT STRAIGHT_JOIN t2.e FROM t1,t2 WHERE t2.d=1 AND t1.b=t2.e
448
create table t1 (c int, b int);
449
create table t2 (a int, b int);
450
create table t3 (b int, c int);
451
create table t4 (y int, c int);
452
create table t5 (y int, z int);
453
create table t6 (a int, c int);
454
insert into t1 values (10,1);
455
insert into t1 values (3 ,1);
456
insert into t1 values (3 ,2);
457
insert into t2 values (2, 1);
458
insert into t3 values (1, 3);
459
insert into t3 values (1,10);
460
insert into t4 values (11,3);
461
insert into t4 values (2, 3);
462
insert into t5 values (11,4);
463
insert into t6 values (2, 3);
464
select * from t1 natural join t2;
468
select * from t1 natural join t2;
472
select b as a, c as b, a as c from t1 natural join t2;
476
select a as c, c as b, b as a from t1 natural join t2;
480
select t1.c, t1.b, t2.a from t1 join (t2 join t4 on b + 1 = y) on t1.c = t4.c;
484
select t1.c as b, t1.b as a, t2.a as c
485
from t1 join (t2 join t4 on b + 1 = y) on t1.c = t4.c;
489
select * from t1 natural join (t2 natural join t3);
493
select * from (t1 natural join t2) natural join (t3 natural join t4);
497
select * from (t1 natural join t2) natural left join (t3 natural join t4);
502
select * from (t3 natural join t4) natural right join (t1 natural join t2);
507
select * from (t1 natural left join t2) natural left join (t3 natural left join t4);
513
select * from (t4 natural right join t3) natural right join (t2 natural right join t1);
519
select * from t1 natural join t2 natural join t3 natural join t4;
523
select * from ((t1 natural join t2) natural join t3) natural join t4;
527
select * from t1 natural join (t2 natural join (t3 natural join t4));
531
select * from t5 natural right join (t4 natural right join ((t2 natural right join t1) natural right join t3));
536
select * from (t1 natural join t2), (t3 natural join t4);
542
select * from t5 natural join ((t1 natural join t2), (t3 natural join t4));
546
select * from ((t1 natural join t2), (t3 natural join t4)) natural join t5;
550
select * from t5 natural join ((t1 natural join t2) cross join (t3 natural join t4));
554
select * from ((t1 natural join t2) cross join (t3 natural join t4)) natural join t5;
558
select * from (t1 join t2 using (b)) join (t3 join t4 using (c)) using (c);
562
select * from (t1 join t2 using (b)) natural join (t3 join t4 using (c));
566
select a,b,c from (t1 natural join t2) natural join (t3 natural join t4)
567
where b + 1 = y or b + 10 = y group by b,c,a having min(b) < max(y) order by a;
570
select * from (t1 natural join t2) natural left join (t3 natural join t4)
571
where b + 1 = y or b + 10 = y group by b,c,a,y having min(b) < max(y) order by a, y;
575
select * from (t3 natural join t4) natural right join (t1 natural join t2)
576
where b + 1 = y or b + 10 = y group by b,c,a,y having min(b) < max(y) order by a, y;
580
select * from t1 natural join t2 where t1.c > t2.a;
584
select * from t1 natural join t2 where t1.b > t2.b;
586
select * from t1 natural left join (t4 natural join t5) where t5.z is not NULL;
590
select * from t1 join (t2 join t4 on b + 1 = y) on t1.c = t4.c;
594
select * from (t2 join t4 on b + 1 = y) join t1 on t1.c = t4.c;
598
select * from t1 natural join (t2 join t4 on b + 1 = y);
601
select * from (t1 cross join t2) join (t3 cross join t4) on (a < y and t2.b < t3.c);
609
select * from (t1, t2) join (t3, t4) on (a < y and t2.b < t3.c);
617
select * from (t1 natural join t2) join (t3 natural join t4) on a = y;
621
select * from ((t3 join (t1 join t2 on c > a) on t3.b < t2.a) join t4 on y > t1.c) join t5 on z = t1.b + 3;
623
1 10 10 1 2 1 11 3 11 4
624
1 10 3 1 2 1 11 3 11 4
625
1 3 10 1 2 1 11 3 11 4
626
1 3 3 1 2 1 11 3 11 4
627
select * from t1 natural join t2 where t1.b > 0;
631
select * from t1 natural join (t4 natural join t5) where t4.y > 7;
635
select * from (t4 natural join t5) natural join t1 where t4.y > 7;
639
select * from t1 natural left join (t4 natural join t5) where t4.y > 7;
643
select * from (t4 natural join t5) natural right join t1 where t4.y > 7;
647
select * from (t1 natural join t2) join (t3 natural join t4) on t1.b = t3.b;
653
select t1.*, t2.* from t1 natural join t2;
657
select t1.*, t2.*, t3.*, t4.* from (t1 natural join t2) natural join (t3 natural join t4);
661
select * from (select * from t1 natural join t2) as t12
663
(select * from t3 natural join t4) as t34;
667
select * from (select * from t1 natural join t2) as t12
669
(select * from t3 natural join t4) as t34;
674
select * from (select * from t3 natural join t4) as t34
676
(select * from t1 natural join t2) as t12;
681
select * from t1 natural join (t3 cross join t4);
682
ERROR 23000: Column 'c' in from clause is ambiguous
683
select * from (t3 cross join t4) natural join t1;
684
ERROR 23000: Column 'c' in from clause is ambiguous
685
select * from t1 join (t2, t3) using (b);
686
ERROR 23000: Column 'b' in from clause is ambiguous
687
select * from ((t1 natural join t2), (t3 natural join t4)) natural join t6;
688
ERROR 23000: Column 'c' in from clause is ambiguous
689
select * from ((t1 natural join t2), (t3 natural join t4)) natural join t6;
690
ERROR 23000: Column 'c' in from clause is ambiguous
691
select * from t6 natural join ((t1 natural join t2), (t3 natural join t4));
692
ERROR 23000: Column 'c' in from clause is ambiguous
693
select * from (t1 join t2 on t1.b=t2.b) natural join (t3 natural join t4);
694
ERROR 23000: Column 'b' in from clause is ambiguous
695
select * from (t3 natural join t4) natural join (t1 join t2 on t1.b=t2.b);
696
ERROR 23000: Column 'b' in from clause is ambiguous
697
select * from (t3 join (t4 natural join t5) on (b < z))
699
(t1 natural join t2);
700
ERROR 23000: Column 'c' in from clause is ambiguous
701
select * from (t1 natural join t2) natural join (t3 join (t4 natural join t5) on (b < z));
702
ERROR 23000: Column 'c' in from clause is ambiguous
709
create table t1 (a1 int, a2 int);
710
create table t2 (a1 int, b int);
711
create table t3 (c1 int, c2 int);
712
create table t4 (c2 int);
713
insert into t1 values (1,1);
714
insert into t2 values (1,1);
715
insert into t3 values (1,1);
716
insert into t4 values (1);
717
select * from t1 join t2 using (a1) join t3 on b=c1 join t4 using (c2);
720
select * from t3 join (t1 join t2 using (a1)) on b=c1 join t4 using (c2);
723
select a2 from t1 join t2 using (a1) join t3 on b=c1 join t4 using (c2);
726
select a2 from t3 join (t1 join t2 using (a1)) on b=c1 join t4 using (c2);
729
select a2 from ((t1 join t2 using (a1)) join t3 on b=c1) join t4 using (c2);
732
select a2 from ((t1 natural join t2) join t3 on b=c1) natural join t4;
735
drop table t1,t2,t3,t4;
736
create table t1 (c int, b int);
737
create table t2 (a int, b int);
738
create table t3 (b int, c int);
739
create table t4 (y int, c int);
740
create table t5 (y int, z int);
741
insert into t1 values (3,2);
742
insert into t2 values (1,2);
743
insert into t3 values (2,3);
744
insert into t4 values (1,3);
745
insert into t5 values (1,4);
746
select * from ((t3 natural join (t1 natural join t2)) natural join t4)
750
drop table t1, t2, t3, t4, t5;
751
create table t1 (a int, b int);
752
insert into t1 values
757
create table t2 (a int not null, primary key(a));
758
insert into t2 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
759
create table t3 (a int not null, primary key(a));
760
insert into t3 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
762
select * from t1, t2, t3 where t3.a=t1.a and t2.a=t1.b;
764
explain select * from t1, t2, t3 where t3.a=t1.a and t2.a=t1.b;
765
id select_type table type possible_keys key key_len ref rows Extra
766
1 SIMPLE t1 ALL NULL NULL NULL NULL 4
767
1 SIMPLE t2 eq_ref PRIMARY PRIMARY 4 test.t1.b 1
768
1 SIMPLE t3 eq_ref PRIMARY PRIMARY 4 test.t1.a 1
769
We expect rnd_next=5, and read_key must be 0 because of short-cutting:
770
show status like 'Handler_read%';
777
Handler_read_rnd_next #
778
drop table t1, t2, t3;
779
create table t1 (a int);
780
insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
781
create table t2 (a int, b int, filler char(100), key(a), key(b));
782
create table t3 (a int, b int, filler char(100), key(a), key(b));
784
select @a:= A.a + 10*(B.a + 10*C.a), @a, 'filler' from t1 A, t1 B, t1 C;
785
insert into t3 select * from t2 where a < 800;
786
drop table t1, t2, t3;
787
create table t1 (a int);
788
insert into t1 values (0),(1),(2),(3),(4),(5),(6),(7),(8),(9);
789
create table t2 (a int, b int, primary key(a));
790
insert into t2 select @v:=A.a+10*B.a, @v from t1 A, t1 B;
791
explain select * from t1;
792
id select_type table type possible_keys key key_len ref rows Extra
793
1 SIMPLE t1 ALL NULL NULL NULL NULL 10
794
show status like '%cost%';
797
select 'The cost of accessing t1 (dont care if it changes' '^';
798
The cost of accessing t1 (dont care if it changes
799
The cost of accessing t1 (dont care if it changes^
800
select 'vv: Following query must use ALL(t1), eq_ref(A), eq_ref(B): vv' Z;
802
vv: Following query must use ALL(t1), eq_ref(A), eq_ref(B): vv
803
explain select * from t1, t2 A, t2 B where A.a = t1.a and B.a=A.b;
804
id select_type table type possible_keys key key_len ref rows Extra
805
1 SIMPLE t1 ALL NULL NULL NULL NULL 10
806
1 SIMPLE A eq_ref PRIMARY PRIMARY 4 test.t1.a 1
807
1 SIMPLE B eq_ref PRIMARY PRIMARY 4 test.A.b 1
808
show status like '%cost%';
811
select '^^: The above should be ~= 20 + cost(select * from t1). Value less than 20 is an error' Z;
813
^^: The above should be ~= 20 + cost(select * from t1). Value less than 20 is an error
815
CREATE TABLE t1 (a INT PRIMARY KEY, b INT);
816
CREATE TABLE t2 (c INT PRIMARY KEY, d INT);
817
INSERT INTO t1 VALUES(1,NULL),(2,NULL),(3,NULL),(4,NULL);
818
INSERT INTO t1 SELECT a + 4, b FROM t1;
819
INSERT INTO t1 SELECT a + 8, b FROM t1;
820
INSERT INTO t1 SELECT a + 16, b FROM t1;
821
INSERT INTO t1 SELECT a + 32, b FROM t1;
822
INSERT INTO t1 SELECT a + 64, b FROM t1;
823
INSERT INTO t2 SELECT a, b FROM t1;
824
EXPLAIN SELECT * FROM t1 JOIN t2 ON b=c ORDER BY a LIMIT 2;
825
id select_type table type possible_keys key key_len ref rows Extra
826
1 SIMPLE t1 ALL NULL NULL NULL NULL 128 Using filesort
827
1 SIMPLE t2 eq_ref PRIMARY PRIMARY 4 test.t1.b 1
828
EXPLAIN SELECT * FROM t1 JOIN t2 ON a=c ORDER BY a LIMIT 2;
829
id select_type table type possible_keys key key_len ref rows Extra
830
1 SIMPLE t1 ALL PRIMARY NULL NULL NULL 128 Using filesort
831
1 SIMPLE t2 eq_ref PRIMARY PRIMARY 4 test.t1.a 1
832
SELECT * FROM t1 JOIN t2 ON b=c ORDER BY a LIMIT 2;
834
SELECT * FROM t1 JOIN t2 ON a=c ORDER BY a LIMIT 2;
838
EXPLAIN SELECT * FROM t1 JOIN t2 ON b=c ORDER BY a;
839
id select_type table type possible_keys key key_len ref rows Extra
840
1 SIMPLE t1 ALL NULL NULL NULL NULL 128 Using filesort
841
1 SIMPLE t2 eq_ref PRIMARY PRIMARY 4 test.t1.b 1
842
EXPLAIN SELECT * FROM t1 JOIN t2 ON a=c ORDER BY a;
843
id select_type table type possible_keys key key_len ref rows Extra
844
1 SIMPLE t1 ALL PRIMARY NULL NULL NULL 128 Using filesort
845
1 SIMPLE t2 eq_ref PRIMARY PRIMARY 4 test.t1.a 1
846
SELECT * FROM t1 JOIN t2 ON b=c ORDER BY a;
848
SELECT * FROM t1 JOIN t2 ON a=c ORDER BY a;
978
DROP TABLE IF EXISTS t1,t2;