SQL查找列表中没有数据库记录的项目

时间:2018-07-27 19:51:24

标签: sql compare record

我需要比较列表中的项目列表,并确定数据库表中缺少的项目。

例如,如果我的列表中包含以下项目:

Item1
Item2
Item3
Item4

数据库表仅具有:

Item1
Item3
Item4

我希望结果为“项目2”。

这种语法显然是不正确的,但这基本上是我要完成的工作:

SELECT Item
FROM Items
WHERE (Item exists in my list but not in Items.Item)

这是可能做到的吗?或者我需要将一个项目列表放在一个表中以比较两个表吗?我对该数据库没有写访问权,所以无法创建表(我知道)。

2 个答案:

答案 0 :(得分:1)

一般方法是left joinnot innot exists

select my.*
from (values (1), (2), (3), (4)) my(item)
where my.item not in (select i.item from items i.item);

并非所有数据库都支持values表构造函数,但通常所有数据库都具有某种方法来构造具有常量值的派生表。

答案 1 :(得分:0)

我最终使用了T-SQL: How to Select Values in Value List that are NOT IN the Table?

中的解决方案

关于SQL,我是一个新手,因此对我来说更容易理解和适应它。