首页 > 解决方案 > 选择满足其他行条件的行

问题描述

我想问一下如何检查一列中的所有行(这是外键),然后如果所有这些行都满足某些条件,然后在 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,其中所有产品的价格高于 50,在这种情况下应该返回 ID 为 100 的账单,因为只有这个账单包含价格高于 50 的产品

先感谢您。

标签: mysql

解决方案


加入表,按 billid 分组并在 having 子句中设置条件:

select 
  pb.billid
from productsbill pb inner join products p
on p.id = pb.productid
group by pb.billid
having min(p.price) > 50

推荐阅读