select * from 
T1
left join (
select * from (select * from (select * from T2 where T1.id = T2.id))
) on 1=1或者select
(
select * from (select * from (select * from T2 where T1.id = T2.id))
)
from 
T1
比如说我要进行这样的查询,sql会提示T1.id 无效.请问如何做T1.id才可以用,请各位帮我扫扫盲.. 谢谢了....

解决方案 »

  1.   

    第二中写法没问题,是正确的。
    地中改一下
    SELECT *
      FROM T1
      LEFT JOIN (SELECT *
                   FROM (SELECT *
                           FROM (SELECT T2.* FROM T2, T1 WHERE T1.ID = T2.ID)))
        ON 1 = 1;
      

  2.   


    --手里没有你的T1 T2 表,以dual表为例 下面的sql是运行正常的。
    SELECT (SELECT *
              FROM (SELECT *
                      FROM (SELECT * FROM DUAL T2 WHERE T1.DUMMY = T2.DUMMY)))
      FROM DUAL T1;--sql的执行顺序
    from -> where -> select -> group by -> having -> order by
    你的第一个sqlt1->t2->t2的select->t2的where条件(注意这时候t1的id 还未获取)因此报错你的第二个sql
    t1->t1的select->t2->t2的select->t2的where条件(注意这时候t1的id 已经执行到)因此执行正确
      

  3.   

    你的第一个sql
    t1->t2->t2的select->t2的where条件(注意这时候t1的id 还未获取)因此报错你的第二个sql
    t1->t1的select->t2->t2的select->t2的where条件(注意这时候t1的id 已经执行到)因此执行正确这个分析请忽略,分析有误!