在db表中查找不在列表中的键

时间:2010-08-11 14:46:34

标签: sql sybase

在sybase上。我有一堆主键

如果我这样做:

从表中选择键,键入(...约2000键的列表...)

我得到大约1700个结果。什么是最简单的方法来获取列表中不存在的约300个条目的列表?

这似乎应该很容易,但我无法解决这个问题......

编辑:似乎可能是一个例子

如果我的表有1,2,4键,我的列表是1,2,3那么我想要一个查询,它会给我答案3 - 我列表中不在表中的元素。如果我使用'NOT IN'然后我得到答案4,这是错误的。

2 个答案:

答案 0 :(得分:1)

我认为您需要将元素放入自己的表中以使其可选。那之后一帆风顺......

SELECT key
    FROM my_new_table
    WHERE key NOT IN (SELECT key
                          FROM Table);

(或上述查询的任何更快版本)。

答案 1 :(得分:0)

我认为您的答案实际上是由@BrianHooper解决方案解决的,但您的问题却缺乏澄清。

您提到的数字“列表”......是否连续不适用。在回应我的评论时,你从未说过你有两张桌子......

因此,它似乎只是为了便于跟踪:您有一个包含2000个项目的主库存表。此外,您还有一个销售活动表,其中包含已售出的所有库存...此表中可能有10,000行,其中包含许多给定商品的多个销售...但是,某些商品从未在10,000销售额。你想知道哪些物品永远不会在库存中售出......

我的查询将基于上述情况,但您必须与实际情况配对。

select   
      MyItemID
   from 
      MyInventoryTable
   where 
      MyItemID NOT IN 
              ( select SoldItemID
                   from SalesData );