从exists语句中选择列

时间:2011-09-06 09:01:31

标签: sql oracle exists

这是我之前提问的后续问题:Optimisation of an oracle query

我现在使用如下查询

select t1.column1, t2.column2 
    from table1@dev t1 
  where exists
         ( select *
              from table2@dev 
            where t2.column2 = t1.column1
              and t2.column3 > 0
                    ) 
order by column1

但问题是我无法从column2访问t2我收到错误

  

t2.column2无效标识符

使用EXISTS

时是否可以从此表访问该列?

提前致谢

1 个答案:

答案 0 :(得分:2)

Exists(顾名思义)仅仅检查该东西是否存在,它不会返回超出存在谓词的真/假的任何数据,所以,这是不可能的从exists语句返回数据。

要从多个表中选择某些内容,您需要加入它们,如下所示:

select t1.column1, t2.column2      
  from table1@dev t1    
    inner join table2@dev t2 on t2.column2 = t1.column1
 where t2.column3 > 0
 order by t1.column1