我有一个关于mysql查询的问题,这是一个复杂的问题,与Mysql联接查询有关匹配所有标签的多个“标签”(多对多关系)有关?
所以我有经典的MN表架构:
Item 1 | Item1 2 | Item2 ... Category 1 | Category1 2 | Category2 3 | Category3 4 | Category4 ... Item_has_category 1 | 1 ...
问题是-如何获得行,其中 项 具有 Category1 或 Category2 AND Category3 ?
它用于某些复杂的过滤器,并且某些类别具有特殊的组,该组必须与 AND 一起使用。
我想我必须将HAVING与DISTINCT结合起来 (链接到顶部的另一个问题) ,但是我不确定如何结合。
这group by将工作:
group by
select ItemId from Item_has_category group by ItemId having sum(case when CategoryId = 1 then 1 end) = 1 or sum(case when CategoryId = 2 then 1 end) = 1 andsum(case when CategoryId = 3 then 1 end) = 1