SQL一列中的多个值

时间:2014-08-25 10:39:00

标签: mysql sql join grouping

我有两个表,第一个是products表,它有2列:id和product_name。 第二个表是filters表,它有2列:filter_id,product_id。

例如我在产品表中有这个:

id | product_name
1  | test product 

,这在过滤表中:

filter_id | product_id
1         | 1
2         | 1
3         | 1

如您所见,ID' 1'有3个过滤器。

我的目标是通过过滤器获取产品。 例如,我需要产品具有2和3 filter_id的每个产品。我试着用这样的东西:

SELECT * FROM products p LEFT JOIN filters f ON (p.id = f.product_id) WHERE (filter_id = '2' AND filter_id = '3')

我无法做到这一点,因为filter_id不能同时等于2和3。 主要问题是我应该只使用一个查询来获取产品。

1 个答案:

答案 0 :(得分:3)

按产品分组,只选择具有filter_ids的那些

SELECT p.id, p.product_name
FROM products p 
JOIN filters f ON p.id = f.product_id
WHERE f.filter_id in (2,3)
group by p.id, p.product_name
having count(distinct f.filter_id) = 2