【问题标题】:SQL Multiple values in one columnSQL 在一列中有多个值
【发布时间】:2014-08-25 10:38:59
【问题描述】:

我有两个表,第一个是 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。 主要问题是我应该只使用一个查询来获取产品。

【问题讨论】:

    标签: mysql sql join grouping


    【解决方案1】:

    按产品分组并仅选择同时具有 filter_id 的产品

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-07-17
      • 1970-01-01
      • 1970-01-01
      • 2021-10-24
      • 2013-09-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多