我有一个ID列表,我想找回没有出现在表中任何行中的ID列表。
例如,这是我的桌子:
item_id | text
--------|-------
1 | one
2 | two
3 | three
例如,如果我的ID列表是 1、2、4和5 ,我想返回 4和5 ,因为这两个都不是' t在表中。知道怎么做吗?
答案 0 :(得分:1)
如果您的外部ID列表未存储在数据库中,则可以通过将所有外部ID串联到一个用括号括起来的逗号分隔值列表中(以将ID放入单独的行中)来构造这样的查询: / p>
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)
这对于没有太多外部ID有用。
如果表OutsideIdTable
中有外部ID,则可以使用
select Outside_Id as UnusedId
from OutsideIdTable
where Outside_Id not in (select Item_id from ItemTable)