表A有列id,数据如下id
1
2
3
4
6
select id form a where id in (3,4,5,6)如果我只需要知道3,4,5,6中哪条拿不到,怎么写?出的结果为5谢~

解决方案 »

  1.   

    表A中的数据只是测试数据,实际数据不是连续数字,请把具体sql写出来,谢谢.
      

  2.   

    with t as(
      select 1 id from dual union all
      select 2 id from dual union all
      select 3 id from dual union all
      select 4 id from dual union all
      select 6 id from dual) 
    SELECT *
      FROM (SELECT LEVEL lv FROM dual WHERE LEVEL IN (3, 4, 5, 6) CONNECT BY LEVEL < 100)
     WHERE lv NOT IN (SELECT id FROM t)
      

  3.   

    谢谢ls的方法,但是数据库为8i
      

  4.   

    select id from a where id not in (3,4,5,6);
      

  5.   

    with t as(
      select d.id from A d) 
    SELECT *
      FROM (SELECT LEVEL lv FROM dual WHERE LEVEL IN (3, 4, 5, 6) CONNECT BY LEVEL < 100)
     WHERE lv NOT IN (SELECT t.id FROM t);
      

  6.   

    SELECT *
      FROM (SELECT LEVEL lv FROM dual WHERE LEVEL IN (3, 4, 5, 6) CONNECT BY LEVEL < 100)
     WHERE lv NOT IN (SELECT t.id FROM A t);
      

  7.   


    8i的话,连 SELECT LEVEL lv FROM dual WHERE LEVEL IN (3, 4, 5, 6) CONNECT BY LEVEL < 100 都会报错
      

  8.   

    8i确有很多东西都不支持的,没有8i的环境,start with...connect by...如果不支持就不好做了
      

  9.   

    create table Test (Id Integer);
    insert into Test(Id)
    select 1 from dual
    union all
    select 2 from dual
    union all
    select 3 from dual
    union all
    select 4 from dual
    union all
    select 6 from dual
    union all
    select 7 from dual
    union all
    select 8 from dual
    union all
    select 10 from dual;
    commit;select AID from 
    (select 3 As AID, ID
      from (select 3 AID from Dual) A, Test B
     where A.AID = B.ID(+)
    union all
    select 4 As AID, ID
      from (select 4 AID from Dual) A, Test B
     where A.AID = B.ID(+)
    union all
    select 5 As AID, ID
      from (select 5 AID from Dual) A, Test B
     where A.AID = B.ID(+)
    union all
    select 6 As AID, ID
      from (select 6 AID from Dual) A, Test B
     where A.AID = B.ID(+))
    where ID is Null;
      

  10.   


    呵呵,公司的生产环境是用8i,我们公司业务比较多,也只是一部分升了10g。Anyway,还是谢谢你的方法。
      

  11.   

    用ETL工具实现了,其实象这样union all我要复制上百条sql语句,我的in里有100多个不同的值。Anyway,谢谢~