问题描述
我在数据库中有这样的表:
===========================
products_id | categories_id
===========================
1 2
1 1
1 3
1 4
1 5
2 5
2 2
2 3
2 4
3 5
4 5
5 5
===========================
我的MysqL不太好,因此我需要一些有关此查询的帮助。我想列出仅包含products_id
的所有categories_id = 5
。也就是说,即使categories_id
为5,也应该仅在没有其他行与该products_id
和不同的categories_id
一起列出的情况下列出该列表。
因此输出应为:3 4 5
。
解决方法
这是一种使用聚合和带有having
子句的过滤的方法:
select product_id
from mytable
group by product_id
having min(category_id) = 5 and max(category_id) = min(category_id)