根据其他表的值筛选mysql表

  • 本文关键字:筛选 mysql 其他 mysql
  • 更新时间 :
  • 英文 :


我这里有两个表,STOCK (ID, CODE)SALES (ID, CODE, STATUS)。我想使用SALES表中的特定条件来过滤STOCK表的值。

例如,如果我们在

中有这些值

STOCK Table:

A1
A2
A3
A4
A5

SALES Table:

A1 - Sold
A2 - Returned 
A3 - Assigned 
A2 - Sold
A4 - Returned
结果应该是:
A4
A5 

任何状态为SOLD和ASSIGNED的项目都应从结果中删除。SALES表中状态已返回的项和STOCK表中尚未使用的项应该可供输入。

我尝试了以下代码,但问题是,一旦在SALES表中以状态SoldAssigned重新输入已返回的项目,它仍然会进入结果。

SELECT t1.CODE
FROM STOCK t1
LEFT JOIN SALES t2 ON t2.CODE = t1.CODE
WHERE (t2.CODE IS NULL OR (t2.STATUS <> 'Sold' AND t2.STATUS <> 'Assigned'));

请帮我解决这个问题

根据您的条件,下面的查询返回您期望的结果:

SELECT S1.CODE
FROM STOCK S1
LEFT JOIN (  
        SELECT t1.CODE
        FROM STOCK t1
        JOIN SALES t2 ON t2.CODE = t1.CODE
        WHERE t2.STATUS IN ('Sold', 'Assigned')) S2 ON S2.CODE = S1.CODE
WHERE S2.CODE IS NULL;

请查找 LIVE DEMO 与给定的样本数据相同。

最新更新