SELECT, который возвращает список значений, отсутствующих в таблице - PullRequest
0 голосов
/ 27 февраля 2019

query:

select id from users where id in (1,2,3,4,5)

Если таблица пользователей содержит идентификаторы 1, 2, 3, это вернет 1, 2 и 3. Я хочу запрос, который вернет 4 и 5. Другими словамиЯ не хочу, чтобы запрос возвращал строки, существующие в таблице, я хочу дать ему список чисел и получить значения из этого списка, которые не отображаются в таблице.

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Сначала вы должны представить свой список чисел как отношение (вероятно, не совсем то, что Oracle Docs будет использовать, но ...)

VALUES 1,2,3,4,5

Затем вы можете использовать это в запросе вколичество способов

SELECT *
 FROM (VALUES 1,2,3,4,5) as V(A)
WHERE A NOT IN ( -- query your table here
                   )

или

SELECT *
  FROM (VALUES 1,2,3,4,5) as V(A)
     LEFT JOIN -- your table
        ON V.A = table.column
 WHERE table.column is NULL

или

VALUES 1,2,3,4,5
 MINUS
 -- query your table

Я не за компьютером с установленным ORacle, поэтому любой из них может бытьнемного по синтаксису, но идеи есть ...

0 голосов
/ 27 февраля 2019

Вы должны будете использовать оператор MINUS .Вы также можете использовать это вместе с odcinumberlist, не сохраняя значения во временной таблице

SELECT column_value
FROM table(sys.odcinumberlist(1,2,3,4,5)) 
MINUS
SELECT ids
FROM users;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...