我需要比较列表中的项目列表,并确定数据库表中缺少的项目。
例如,如果我的列表包含以下项目:
Item1
Item2
Item3
Item4
而数据库表只有:
Item1
Item3
Item4
我希望结果是"项目2"。
这个语法显然不正确,但这基本上就是我想要实现的:
SELECT Item
FROM Items
WHERE (Item exists in my list but not in Items.Item)
可以这样做吗?或者我需要在一个表中列出项目列表来比较两个表吗?我没有对此数据库的写访问权限,因此无法创建表(据我所知(。
一般方法是left join
、not in
或not exists
:
select my.*
from (values (1), (2), (3), (4)) my(item)
where my.item not in (select i.item from items i.item);
并非所有数据库都支持values
表构造函数,但所有数据库通常都有一些方法来构造具有常数值的派生表。
我最终使用了T-SQL中的解决方案:如何在值列表中选择不在表中的值?
在SQL方面,我还是个新手,所以这对我来说更容易理解并适应我的需求。