语句如
  SELECT COUNT(*) FROM Q2002 A LEFT JOIN Q2003 B ON A.SE2001 = B.SE2001 AND B.AYPE = a.FMAL 
                WHERE B.code IN(SELECT abcode FROM Q2008 where gcode='CLC2') 
上面这语句出来的数据显示是0,结果错误,应该是没查出数据
 SELECT COUNT(*) FROM Q2002 A LEFT JOIN Q2003 B ON A.SE2001 = B.SE2001 AND B.AYPE = a.FMAL 
                AND B.code IN(0305,0502,0501,0419,0605,1002,0904,0702,0810) 
这数据时正确的,显示88条,
不知道是啥原因,请大牛们帮忙。

解决方案 »

  1.   

    补充,0305,0502,0501,0419,0605,1002,0904,0702,0810是SELECT abcode FROM Q2008 where gcode='CLC2'查出来的数据 不存在sql错误问题
      

  2.   

    测试数据:CREATE TABLE T165
    (
        ID NUMBER(4),
        F1 VARCHAR2(20)
    );
    INSERT INTO T165 VALUES(1, 'A');
    INSERT INTO T165 VALUES(2, 'B');
    INSERT INTO T165 VALUES(3, 'C');
    INSERT INTO T165 VALUES(4, 'D');CREATE TABLE T166
    (
        ID NUMBER(4),
        F2 VARCHAR2(20)
    );INSERT INTO T166 VALUES(1, 'AA');
    INSERT INTO T166 VALUES(2, 'BB');
    INSERT INTO T166 VALUES(3, 'CC');
    INSERT INTO T166 VALUES(4, 'DD');
    测试结果:
    没有问题的,看来还是你写的有问题,仔细检查吧。
      

  3.   

    除了你“SELECT abcode FROM Q2008 where gcode='CLC2'”  
    这个语句查询没内容,否则应该一样的
      

  4.   

    WHERE B.code IN(SELECT abcode FROM Q2008 where gcode='CLC2')  
    这句话,看看是不是abcode带有空格,造成b.code不在abcode中。IN(0305,0502,0501,0419,0605,1002,0904,0702,0810)  没带有空格
      

  5.   

    会不会字段类型的问题?
    create table t1(str varchar2(10)); ----str用varchar2类型
    insert into t1 values ('1');
    commit;create table t2(str char(10));  --str用char类型
    insert into t2 values ('1');
    commit;SQL> select * from t1 where t1.str in ('1');   --可以查出结果
     
    STR
    ----------
    1
    SQL> select * from t1 where t1.str in (select t2.str from t2);  --没有结果
     
    STR
    ----------
      

  6.   

    嗯,呵呵,可能是空格之类问题...楼主 用 SELECT trim(abcode) FROM Q2008 where gcode='CLC2' 试下。