我想问我如何检查一列中的所有行(这是外键),然后 如果所有这些行都满足某个条件,则可以在MySQL中从中获取结果。
例如,我有以下三个表
Products
ID Price
1 70
2 20
3 55
Bill
ID (others columns are not important)
100
200
300
ProductsBill
ID BillID ProductID
1 100 1
2 100 3
3 200 2
4 200 1
5 300 2
现在,我要选择所有BillsID,其中该Bill中的所有产品的价格都高于50, 在这种情况下应返回ID为100的帐单,因为只有此帐单包含价格高于50的产品
谢谢。
答案 0 :(得分:1)
加入表,按Billid分组,并在hading子句中设置条件:
select
pb.billid
from productsbill pb inner join products p
on p.id = pb.productid
group by pb.billid
having min(p.price) > 50
答案 1 :(得分:0)
尝试:
SELECT DISTINCT BillID FROM ProductsBill WHERE BillID NOT IN (
SELECT DISTINCT pb.BillID FROM
ProductsBill pb JOIN Products p on pb.ProductID = p.ID
WHERE p.PRICE < 50
);
子查询...
SELECT DISTINCT pb.BillID FROM
ProductsBill pb JOIN Products p on pb.ProductID = p.ID
WHERE p.PRICE < 50
...选择所有至少有一个关联价格<50的产品的BillID。外部查询然后选择ProductBill表中所有没有至少一个的BillID。关联价格<50的产品。