查询输出表中不存在的值

时间:2011-04-21 23:29:41

标签: sql oracle

在Oracle查询中需要帮助

要求:

我在表格中有5行,可以说ID = 1,2,3,4,5

要求是这样的,用户可以传递任何值作为输入,如果表中没有该值,则查询应该返回不存在的值。

例如:
    1.如果用户通过9,则Oracle查询应将输出返回为9
    2.如果用户通过1,2,10,则Oracle查询应将输出返回为10

上面示例中的9和10不在表中。

我正在使用以下查询但未获得结果。

SELECT ID
FROM TABLE_NAME WHERE ID NOT IN
(SELECT ID 
FROM TABLE_NAME where ID NOT in (1,2,10))

2 个答案:

答案 0 :(得分:0)

create table z (id number);
Table created.

SQL> insert into z values (1);
1 row created.
SQL> insert into z values (2);
1 row created.
SQL> insert into z values (3);
1 row created.
SQL> insert into z values (4);
1 row created.
SQL> insert into z values (5);
1 row created.

SQL> select 10 id from dual
  2  minus
  3  select id from z;

    ID
----------
    10

答案 1 :(得分:0)

您可以使用嵌套表作为输入:

SQL> CREATE TABLE table_name (ID NUMBER NOT NULL); 

Table created

SQL> INSERT INTO table_name (SELECT ROWNUM FROM dual CONNECT BY LEVEL <= 5); 

5 rows inserted

SQL> CREATE TYPE tab_number AS TABLE OF NUMBER;
  2  / 

Type created

SQL> SELECT *
  2    FROM TABLE(tab_number(1,2,10)) x
  3   WHERE x.column_value NOT IN (SELECT ID FROM table_name);

COLUMN_VALUE
------------
          10