日期:2014-05-17  浏览次数:20770 次

oracle数据库
怎样将查询出来的结果作为另一个查询的条件
例如:
将select distinct substr(filter,4) from t_Wage_Status
 where companyid = '43f00833-586d-4f53-81c7-1e10f528ca9c' 
 and year = 2012 and month = 10   (A)
查出来的结果作为select * from t_wage_personnel  (B)的条件

问题:
  select * from t_wage_personnel 
 where 
      (
         select distinct substr(filter,4) from t_Wage_Status
          where companyid = '43f00833-586d-4f53-81c7-1e10f528ca9c' 
          and year = 2012 and month = 10 
      ) 
  为什么不行?求解

补充:A查询出来的结果是
 CompanyID='43f00833-586d-4f53-81c7-1e10f528ca9c' AND EMPLOYEETYPE='1' 这样的



------最佳解决方案--------------------
你试试这样


select * from t_wage_personnel 
 where 
      (
         select distinct substr(filter,4) from t_Wage_Status
          where companyid = '43f00833-586d-4f53-81c7-1e10f528ca9c' 
          and year = 2012 and month = 10 
      )  
------其他解决方案--------------------
(A)
 (B)
两个结果集要有可以关联的字段才可以的
------其他解决方案--------------------
B的查询结果是A的查询条件,这样也需要关联吗?

------其他解决方案--------------------
 ' and 1' = '1'


------其他解决方案--------------------
为什么要加上
------其他解决方案--------------------
 ' and 1' = '1' 这个呀
------其他解决方案--------------------
我试了下,运行的时候不报错了,但查不到数据,我直接将 
select distinct substr(filter,4) from t_Wage_Status  where companyid = '43f00833-586d-4f53-81c7-1e10f528ca9c'  and year = 2012 and month = 10  查出来的结果
 CompanyID='43f00833-586d-4f53-81c7-1e10f528ca9c' AND EMPLOYEETYPE='1' AND TYPE<>'8'
放到where的后面是可以查到数据的
------其他解决方案--------------------
额。。。那就没办法了。因为你A表查询出来的是字符串,无法成为B表的查询条件。。

原本是想拼接字符串,貌似拼接后不抱错但查不出来数据。。。
------其他解决方案--------------------
我把=号改为!=号,就所有的数据都出来了,所以是不是
------其他解决方案--------------------
' and 1' = '1' 这里出了问题

------其他解决方案--------------------
' and 1' = '1'可不可以理解为1等于"1",因为不等,所以没数据呀
------其他解决方案--------------------
引用:
我把=号改为!=号,就所有的数据都出来了,所以是不是