drop table if exists t1,t2,t3; CREATE TABLE t1 (a int not null, b char (10) not null); insert into t1 values(1,'a'),(2,'b'),(3,'c'),(3,'c'); CREATE TABLE t2 (a int not null, b char (10) not null); insert into t2 values (3,'c'),(4,'d'),(5,'f'),(6,'e'); select t1.a,t3.y from t1,(select a as y from t2 where b='c') as t3 where t1.a = t3.y; a y 3 3 3 3 select t1.a,t3.a from t1,(select * from t2 where b='c') as t3 where t1.a = t3.a; a a 3 3 3 3 CREATE TABLE t3 (a int not null, b char (10) not null); insert into t3 values (3,'f'),(4,'y'),(5,'z'),(6,'c'); select t1.a,t4.y from t1,(select t2.a as y from t2,(select t3.b from t3 where t3.a>3) as t5 where t2.b=t5.b) as t4 where t1.a = t4.y; a y 3 3 3 3 SELECT a FROM (SELECT 1 FROM (SELECT 1) HAVING a=1); Unknown column 'a' in 'having clause' SELECT a,b as a FROM (SELECT '1' as a,'2' as b) HAVING a=1; Column: 'a' in having clause is ambiguous SELECT a,2 as a FROM (SELECT '1' as a) HAVING a=2; a a 1 2 SELECT a,2 as a FROM (SELECT '1' as a) HAVING a=1; a a SELECT 1 FROM (SELECT 1) WHERE a=2; Unknown column 'a' in 'where clause' SELECT (SELECT 1) as a FROM (SELECT 1 FROM t1 HAVING a=1); Unknown column 'a' in 'having clause' drop table if exists t1.t2,t3; select * from (select 1); 1 1 select a from (select 1 as a); a 1 select 1 from (select 1); 1 1