有一张表A,里面有字段CERSEQ,例如数据如下:
CERSEQ
1
2
3
10
11
12
13
14
15
20我想通过一句SQL语句,查询出CERSEQ取值范围从1到20之间缺失的数据
4
5
6
7
8
9
16
17
18
19请问该怎么写呢?

解决方案 »

  1.   


    SELECT LV
      FROM (SELECT LEVEL LV FROM DUAL CONNECT BY LEVEL<=20)
     WHERE T.LV NOT IN(SELECT CERSEQ FROM A);
      

  2.   


    SELECT LV
      FROM (SELECT LEVEL LV FROM DUAL CONNECT BY LEVEL<=20) T
     WHERE T.LV NOT IN(SELECT CERSEQ FROM A);
      

  3.   

    with a as(
    select 1 cerseq from dual
    union all
    select 2 from dual
    union all
    select 3 from dual
    union all
    select 10 from dual
    union all
    select 11 from dual
    union all
    select 12 from dual
    union all
    select 13 from dual
    union all
    select 14 from dual
    union all
    select 15 from dual
    union all
    select 20 from dual
    ),b as(
    select level lv from dual  connect by level <= 20
    )
    select lv from b where lv not in (select cerseq from a)