MySql Databe-列出仅具有一个类别的产品

问题描述

我在数据库中有这样的表:

===========================
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)