0

假设我有一个如下图所示的 MySQL 表,并且我想找到任何product_id具有过滤器 2 和 5 的 's(因此在表中这将是 30 的 product_id),这在 MySQL 中是否可能?或者我是否必须在filter_id2 或 5 的位置获取产品 ID,然后在 PHP 中对其进行排序?

sql表

4

1 回答 1

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 的行。

于 2013-04-14T09:55:31.727 回答