【问题标题】:SQL Find items in list that have no record in DBSQL查找列表中没有数据库记录的项目
【发布时间】:2018-07-27 19:51:23
【问题描述】:

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

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

Item1
Item2
Item3
Item4

而数据库表只有:

Item1
Item3
Item4

我希望结果是“第 2 项”。

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

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

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

【问题讨论】:

  • SQL 中没有任何东西被称为“列表”。您的数据是什么样的?
  • 您是否使用编程语言来列出项目?如果是这样,您也应该标记该语言...

标签: sql compare record


【解决方案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 表构造函数,但通常都有一些方法来构造具有常量值的派生表。

【讨论】:

    【解决方案2】:

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

    对于 SQL,我还是个新手,所以这对我来说更容易理解并适应我的需要。

    【讨论】:

      猜你喜欢
      • 2014-06-27
      • 2023-03-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-23
      • 2015-03-05
      • 1970-01-01
      相关资源
      最近更新 更多