如何通过订单ID获取部件ID,并且该部件没有其他订单

时间:2018-10-02 16:46:12

标签: sql

表具有orer_id和part_id字段。该部分可能以多个顺序存在,例如123、456以000000000001和000000000002存在

| order_id     | part_id | 
=========================|
| 000000000001 | 00123   |  
| 000000000001 | 00456   | 
| 000000000001 | 00789   | 
| 000000000002 | 00123   | 
| 000000000002 | 00456   | 

想找出由order_id排序的part_id,但该零件未由提供的order_id以外的其他任何人订购。

例如,通过oerder_id = 000000000001进行查询,并希望查看结果{789}(因为123和456也由其他order_id进行了排序)

2 个答案:

答案 0 :(得分:1)

您可以使用NOT EXISTS和相关子查询,该子查询检查具有相同零件的其他订单。

SELECT t1.part_id
       FROM elbat t1
       WHERE t1.order_id = '000000000001'
             AND NOT EXISTS (SELECT *
                                    FROM elbat t2
                                    WHERE t2.order_id <> t1.order_id
                                          AND t2.part_id = t1.part_id);

答案 1 :(得分:1)

使用子查询

select * from yourtable a
where order_id = '1'
and part_id not in (select part_id from yourtable where order_id <> a.order_id)