Как получить идентификаторы, которых нет в таблице? - PullRequest
0 голосов
/ 09 апреля 2019

У меня есть список идентификаторов, и я хотел бы получить список идентификаторов, которые не отображаются ни в одной строке в моей таблице.

Например, это моя таблица:

item_id | text
--------|-------
1       | one
2       | two
3       | three

И, например, если мой список идентификаторов 1, 2, 4 и 5 , я хотел бы получить обратно 4 и 5 , потому что оба они не находятся в стол. Есть идеи как это сделать?

1 Ответ

1 голос
/ 09 апреля 2019

Если у вас есть список внешних идентификаторов, который не хранится в базе данных, вы можете создать такой запрос, объединив все внешние идентификаторы в разделенный запятыми список значений, заключенный в скобки (чтобы поместить идентификаторы в отдельные строки):

with 
  cte as (
    -- construct list of outside values in brackets here
    select [] as Outside_Id from (values (1),(2),(4),(5))
  ) 
select Outside_Id as UnusedId
from cte
where Outside_Id not in (select Item_id from ItemTable)

Это работает для не слишком большого количества внешних идентификаторов.

Если у вас есть внешние идентификаторы в таблице OutsideIdTable, тогда вы можете использовать

select Outside_Id as UnusedId
from OutsideIdTable
where Outside_Id not in (select Item_id from ItemTable)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...