Select 个 table 中的记录,其中另一个 table 中的数据决定显示哪些记录

Select records in a table, where the data in another table determines which records are shown

我有两个表,第一个是Purchase_Orders (PO),第二个是Purchase_Order_Items (POI)

我需要 select 来自 PO 的所有采购订单,这些订单仍有来自 POI 的物品要交付。

因此,如果 POI 中的所有 Delivered 列都等于 1,则不显示采购订单,否则它应该在记录集中显示采购订单。

表之间的关系是

PO.Order_No = POI.Order_No

您可以在此处使用现有逻辑:

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);