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

标签 sql compare record

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

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

Item1
Item2
Item3
Item4

数据库表只有:

Item1
Item3
Item4

我希望结果为“Item 2”。

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

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

这可以做到吗?或者我是否需要将我的项目列表放在表中来比较两个表?我没有对此数据库的写入权限,因此无法创建表(据我所知)。

最佳答案

一般方法是左连接不在不存在:

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

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

关于SQL 查找列表中数据库中没有记录的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51564678/

相关文章:

php - 如何以这样的格式计算过去的小时数 hh :mm - hh:mm?

mysql - 为什么这些查询会返回不同的结果?

MySQL 查询 - 排序和分组的混合

C 指针数组的 int 比较器

constructor - 如何对 F# 记录进行参数验证

PHP没有返回最新更新的sql过程结果

python - 使用 Python 的列表列表的差异

java - 迭代对象列表并验证属性 (int) 是否相互跟随(例如 : (1, 2,3,4)、(3,4,5,6),但不是 (1,2,5) 或 (3,4,5 ,7))

java - 什么时候在 Java 中一起使用密封类和记录?

php - 如何将值放入多个类别中