Запрос на вывод значений, которых нет в таблице - PullRequest
2 голосов
/ 22 апреля 2011

Нужна помощь в запросе Oracle

Требования:

У меня есть 5 строк в таблице, скажем, ID = 1, 2, 3, 4, 5

Требование таково, что пользователь может передать любое значение в качестве ввода, и если этого значения нет в таблице, запрос должен вернуть мне значение, которого нет.

Ex:
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 голосов
/ 22 апреля 2011

Вы можете использовать вложенную таблицу в качестве ввода:

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
0 голосов
/ 22 апреля 2011
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...