假设我有一个如下图所示的MySQL表,我想找到任何具有过滤器2和5的product_id
(所以在表中这将是product_id为30),这是可能的吗?在MySQL?或者我是否必须获得filter_id
为2或5的产品ID,并在PHP中对其进行排序?
答案 0 :(得分:2)
SELECT product_id, COUNT(*) AS i FROM mytable WHERE filter_id IN (2,5) GROUP BY product_id HAVING i = 2;
这将匹配包含任何所需filter_id的任何行,并将具有相同product_id的行组合在一起。名称i已被赋予给出组中行数的列。假设product_id与filter_id的每个组合都是唯一的,那么您知道任何具有两行的组都将匹配两个filter_id,因此HAVING子句最终将过滤掉仅匹配其中一个filter_id的行。