检查具有相同FK的行中的值

时间:2014-10-21 19:15:19

标签: mysql sql

我有下表

ID  | PARCEL  | STATUS  | ORDER_ID
1     1         COMPLETE     1234
2     2         COMPLETE     1234
3     1         COMPLETE     9999 
4     2         PENDING      9999   
5     3         PENDING      9999
6     1         COMPLETE     1111
7     2         COMPLETE     1111
8     3         COMPLETE     1111   
9     1         COMPLETE     3333 
10    2         PENDING      3333 

我需要选择order_id,ALL PARCEL具有COMPLETE状态。

我正在尝试选择,但不能正常工作

SELECT * FROM table WHERE order_id NOT IN 
(SELECT order_id  FROM table WHERE status = 'COMPLETE'); 

查询的答案是

ID  | PARCEL  | STATUS  | ORDER_ID
1     1         COMPLETE     1234
2     2         COMPLETE     1234
6     1         COMPLETE     1111
7     2         COMPLETE     1111
8     3         COMPLETE     1111   

2 个答案:

答案 0 :(得分:1)

您可以使用NOT EXISTS子句,因此它会跳过任何状态不是COMPLETE的order_id

   SELECT * FROM tableA A1
    WHERE NOT EXISTS 
    ( SELECT 1 from tableA A2
      where A1.order_id= A2.order_id
      and A2.status <> 'COMPLETE'
    ) 

答案 1 :(得分:-1)

从table_parcels中选择*,其中STATUS类似于'COMPLETE';