我有个SQL语句,子查询里如果只有一个条件就不会报错,但是两条放在一起就有问题。1、执行整个SQL报错,说无效数字:select a.subjid from HADS a where  a.HADSSN>=8 and (select count(*) from HA where subjid=a.subjid and HAMDSN is null)>0; 2、单独执行任一个子查询则不会报错。如select a.subjid from HADS a where  a.HADSSN>=8 and (select count(*) from HA where subjid=a.subjid )>0; 或 select a.subjid from HADS a where  a.HADSSN>=8 and (select count(*) from HA where HAMDSN is null )>0; 都不会报错,加在一起就报错,请高手指点,如果正确,我倾分感谢! subjid 为字符型。HAMDSN 为字符型 OracleselectSQL

解决方案 »

  1.   

    你单独执行这个会不会报错?select count(*)
              from HA b,HADS a
             where b.subjid = a.subjid
               and b.HAMDSN is null
    这种问题的思路就是一个条件一个条件的的查。
      

  2.   

    很明显,同时两个条件查询的时候没有符合要求的记录。这种东西做个view查多方便,你这么写不好理解
    select subjid from(
    select a.subjid as subjid ,hadssn,hamdsn from hads a,ha b where a.subjid=b.subjid)
    where hadssn>8 and hamdsn is not null;貌似LZ是这个意思