SQL一对多连接 - 如果'many'表中的任何行等于X,则不返回'one'表中的行

时间:2013-11-15 01:59:07

标签: sql join

我尝试过搜索这个问题,但在描述它时遇到了一些麻烦。

我在一对多关系中有两个表order_itemsprocesses。单个订单商品可以有许多流程。我希望从order_items中选择行,其中processes中没有对应的行等于数字,比如说1,2或3.如果没有,我仍希望返回order_items中的行processes中的相应行,即空值。

作为一个例子

`order_items`
item_number     order_value
    1               10
    2               20
    3               10


`processes`
item_number    process_number
    1               1
    1               4
    2               4
    2               5

我想做的查询不会返回item_number 1,因为它在(1,2,3)中有process_number但会返回第2和第3项。

Results
item_number    order_value
    2              20
    3              10

1 个答案:

答案 0 :(得分:1)

尝试这样的事情:

SELECT *
FROM order_items o
WHERE item_number NOT IN (
    SELECT item_number
    FROM processes
    WHERE process_number IN (1, 2, 3)
    )

sqlfiddle demo