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

选择表中的记录,其中另一个表中的数据决定显示哪些记录

  •  -2
  • jackawan  · 技术社区  · 3 年前

    我有两张桌子,第一张是 Purchase_Orders (PO) 二是 Purchase_Order_Items (POI)

    我需要从中选择所有采购订单 PO 仍有物品需要从 POI

    因此,如果所有 Delivered 来自 波伊 等于1,否则应在记录集中显示采购订单。

    表之间的关系如下所示

    PO.Order_No = POI.Order_No

    1 回复  |  直到 3 年前
        1
  •  1
  •   Tim Biegeleisen    3 年前

    您可以在这里使用exists逻辑:

    SELECT po.*
    FROM Purchase_Orders po
    WHERE EXISTS (
        SELECT 1
        FROM Purchase_Order_Items poi
        WHERE poi.Order_No = po.Order_No AND
              poi.Delivered <> 1
    );
    

    exists子查询可能受益于以下索引:

    CREATE INDEX idx ON Purchase_Order_Items (Order_No, Delivered);