0

I got this "single-row subquery returns more than one row"

and my Query is

Select contact_ID from contact where (

Select b.Contact_ID from company a, contact b where a.Company_ID =  b.Company_ID 
and a.IS_ACTIVE <> 'N' and b.IS_ACTIVE <> 'N'
and a.CREATED_DATE >= '01-Jun-2013') =
(
Select b.Contact_ID from company a, contact b where a.Company_ID =  b.Company_ID 
and a.IS_ACTIVE <> 'N' and b.IS_ACTIVE <> 'N'
and a.CREATED_DATE < '01-Jun-2013');

I don't know why this is not working. Please help me out

4

3 回答 3

1

尝试这个

    Select contact_ID from contact where Contact_ID in 
        (
         Select b.Contact_ID from company a 
         inner join contact b 
         on  a.Company_ID =  b.Company_ID 
         where a.IS_ACTIVE <> 'N' and b.IS_ACTIVE <> 'N'
         and a.CREATED_DATE >= '01-Jun-2013' 
         ) ;

编辑:

IN没有子句更简单。

     Select b.Contact_ID from company a 
     inner join contact b 
     on  a.Company_ID =  b.Company_ID 
     where a.IS_ACTIVE <> 'N' and b.IS_ACTIVE <> 'N'
     and a.CREATED_DATE >= '01-Jun-2013' ;
于 2013-09-16T19:55:13.473 回答
0

尝试这个

Select contact_ID 
from contact 
where (
Select b.Contact_ID 
from company a, contact b 
where a.Company_ID =  b.Company_ID 
and a.IS_ACTIVE <> 'N' and b.IS_ACTIVE <> 'N'
and a.CREATED_DATE >= '01-Jun-2013') IN
(
Select b.Contact_ID 
from company a, contact b 
where a.Company_ID =  b.Company_ID 
and a.IS_ACTIVE <> 'N' and b.IS_ACTIVE <> 'N'
and a.CREATED_DATE < '01-Jun-2013');
于 2013-09-16T19:53:16.300 回答
0

尝试这个:

删除了子选择并替换为联合。

Select b.Contact_ID 
from company a, contact b 
where a.Company_ID =  b.Company_ID 
and a.IS_ACTIVE <> 'N' and b.IS_ACTIVE <> 'N'
and a.CREATED_DATE >= '01-Jun-2013'
union
Select b.Contact_ID 
from company a, contact b 
where a.Company_ID =  b.Company_ID 
and a.IS_ACTIVE <> 'N' and b.IS_ACTIVE <> 'N'
and a.CREATED_DATE < '01-Jun-2013');
于 2013-09-16T20:19:41.263 回答