我有一个表:supplier_product
Product , Supplier, Status
Sugar , N_Supp, MAIN
Sugar , S_Supp, SUB
Sugar , E_Supp, MAIN
Water , N_Supp, SUB
Water , S_Supp, SUB
Water , W_Supp, SUB
Milk , S_Supp, MAIN
Milk , N_Supp, MAIN
Cream , N_Supp, SUB
Cream , E_Supp, SUB
Coffee , S_Supp, MAIN
Coffee , W_Supp, SUB
Coffee , N_Supp, SUB
我必须获取所有状态只有“SUB”的产品。 我用了这段代码。但我无法找出查询的问题,它的结果不正确
SELECT DISTINCT
s.product
FROM supplier_product s
WHERE EXISTS (SELECT
*
FROM supplier_product
WHERE supplier_product.product = s.product
AND supplier_product.status = 'SUB')
它应该得到以下结果:
Product
Water
Cream
如果您遇到此问题或任何链接/建议,请提供帮助。我会很高兴了解它。谢谢。
最佳答案
使用聚合最容易做到这一点:
select sp.product
from supplier_product sp
group by sp.product
having min(sp.status) = max(sp.status) and -- the statuses are all the same
min(sp.status) = 'SUB'; -- the value is 'SUB'
关于mysql - SQL - 从具有公共(public)字段的组中获取不同的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39908463/