代码之家  ›  专栏  ›  技术社区  ›  pauljwilliams

在数据库表中查找不在列表中的键

  •  0
  • pauljwilliams  · 技术社区  · 14 年前

    关于Sybase。我有很多主键

    如果我这样做:

    从键所在的表中选择键(…大约2000个键的列表…)

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

    这似乎是件容易的事,但我无法解决…

    编辑:似乎一个例子

    如果我的表有键1、2、4,而我的列表是1、2、3,那么我需要一个查询,该查询将给出答案3,即列表中不在表中的元素。如果我用“不在”,那么我得到的答案是4,这是错误的。

    2 回复  |  直到 14 年前
        1
  •  1
  •   Brian Hooper    14 年前

    我想你需要把你的元素放到一个自己的表中,让它们可以选择。在那之后就一帆风顺了…

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

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

        2
  •  0
  •   DRapp    14 年前

    我认为你的答案实际上是通过@brianhooper solution解决的,但是你的问题缺乏澄清。

    你提到一个数字列表…连续或不连续不适用。针对我的评论,你从未说过你有两张桌子…

    因此,它看起来只是为了便于以下操作:您有一个包含2000个项目的主库存表。此外,您还有一个销售活动表,其中列出了所有已售出的库存…这张表可以有10000行,其中包括许多给定项目的多次销售…然而,有些商品的销售量从未超过10000件。你想知道库存中的2000件商品中有哪些从未卖完…

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

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