我想获取所有仅显示ID的记录,这些记录没有通过stutus = 2,但是已从特定状态中取消。表是A_ORDERS_LOG和A_ORDERS。
因此,每个ID可以经历各种状态。我有兴趣查看仅那些已从某些状态取消并且尚未通过status = 2的ID。
我已经尝试过]
SELECT * FROM A_ORDERS_LOG WHERE ( STATUS1 = 0 AND STATUS2 = 11 ) OR ( STATUS1 = 1 AND STATUS2 = 11 ) OR ( STATUS1 = 3 AND STATUS2 = 11 ) OR ( STATUS1 = 4 AND STATUS2 = 11 ) OR ( STATUS1 = 41 AND STATUS2 = 11 ) OR ( STATUS1 = 42 AND STATUS2 = 11 ) OR ( STATUS1 = 43 AND STATUS2 = 11 ) OR ( STATUS1 = 5 AND STATUS2 = 11 ) OR ( STATUS1 = 6 AND STATUS2 = 11 ) AND EXISTS ( SELECT STATUS1, STATUS2 FROM A_ORDERS_LOG WHERE ( STATUS1 != 2 OR STATUS2 != 2 ) AND ID IN ( SELECT ID FROM A_ORDERS ) ) );
Status2 = 11-表示正在取消,status1是其取消的状态。
我想获取所有仅显示ID的记录,这些记录没有通过stutus = 2,但是已从特定状态中取消。表是A_ORDERS_LOG和A_ORDERS。因此,每个ID都可以通过...
似乎在确定exists
子句之后的过滤状态时,您需要一个not exists
和一个where
:>
select *
from a_orders_log o
where status1 in ( 0, 1, 3, 4, 5, 6, 41, 42, 43 ) and status2 = 11
and not exists (select 0
from a_orders_log
where 2 in ( status1 , status2 ) )
and exists ( select 1 from a_orders o2 where o2.id = o.id );