选择或打印两个整数之间不存在的列值

时间:2019-02-08 12:16:35

标签: sql oracle

我有大约10k个顺序整数值的列表,这些值应该从外部应用程序插入到表列中。但是,执行COUNT()会显示仅插入了9900。

我需要确定未插入序列中的哪些数字。

以另一种方式使用它很容易,只需从值介于x和y之间的表列中进行选择,但我还没有弄清楚如何打印(或选择)表列中不存在的值

编辑:从下面的整数中删除多余的

it

如何从BETWEEN子句中打印出其中column2在范围内没有值的值?

2 个答案:

答案 0 :(得分:5)

您可以执行以下操作:

select level num
from   dual
connect by level <= 10000
minus
select column2
from   your_table;

如果column2是varchar2列,则可能需要执行to_char(level)

答案 1 :(得分:1)

您需要使用数字来源。如果此表仅是您的数据,则可以使用它:

with n as (
      select rownum as n
      from t cross join
           (select 1 from dual union all select 2 from dual) x
     )
select n.n
from n left join
     t
     on n.n = t.column2 and t.column1 = 'value'
where n <= 10000;

对于n的计算假设您的表至少有5,000行。如果数量超过10,000,则不需要x