--disable_query_log set @@session.explicit_defaults_for_timestamp=off; --enable_query_log # owner: bin.lb # owner group: SQL1 # tags: join # description: # join using case # --disable_warnings drop table if exists tjuo1,tjuo2,tjuo3; --enable_warnings create table tjuo1 (pk int,c1 int, primary key(pk)); create table tjuo2 (pk int,c1 int, c2 int, primary key(pk)); create table tjuo3 (pk int,c2 int, primary key(pk)); insert into tjuo1 values(1, 11), (2, 12), (3, 13); insert into tjuo2 values(4, 11, 21), (5, 12, 22), (6, 13, 23); insert into tjuo3 values(7, 21), (8, 22), (9, 23); select * from tjuo1; select * from tjuo2; select * from tjuo3; #2T SELECT * FROM tjuo1 JOIN (SELECT * FROM tjuo2) as tjuo2_alias on tjuo1.c1= tjuo2_alias.c1; SELECT * FROM tjuo1 RIGHT JOIN (SELECT * FROM tjuo2) as tjuo2_alias USING (c1); #3T SELECT * FROM tjuo1 JOIN tjuo2 on tjuo1.c1=tjuo2.c1 JOIN tjuo3 on tjuo2.c2=tjuo3.c2; SELECT * FROM tjuo1 RIGHT JOIN tjuo2 USING (c1) RIGHT JOIN tjuo3 USING (c2); SELECT * FROM tjuo1 RIGHT JOIN (SELECT * FROM tjuo2) as tjuo2_alias USING (c1) RIGHT JOIN tjuo3 USING (c2); SELECT * FROM (SELECT * FROM tjuo1) tjuo1_alias RIGHT JOIN (SELECT * FROM tjuo2) as tjuo2_alias USING (c1) RIGHT JOIN (SELECT * FROM tjuo3) as tjuo3_alias USING (c2); SELECT * FROM (SELECT * FROM tjuo1) tjuo1_alias RIGHT JOIN tjuo2 USING (c1) RIGHT JOIN (SELECT * FROM tjuo3) as tjuo3_alias USING (c2); SELECT * FROM (SELECT c2 FROM tjuo1 as i1 JOIN (SELECT * FROM tjuo2) as i2 USING (c1) ) as t12 RIGHT JOIN (SELECT * FROM tjuo3) as tjuo3_alias USING (c2); SELECT * FROM (SELECT c2 FROM tjuo1 as i1 JOIN (SELECT * FROM tjuo2) as i2 USING (c1) ) as t12; drop table tjuo1, tjuo2, tjuo3;