比较多个列值

时间:2016-06-18 07:37:14

标签: mysql sql

好的,所以我的表格包含以下数据

表格过滤器

product_id      filter_id     
51                 1
52                 2
51                 2
52                 1
52                 4

表格描述

group_id      filter_id     filter_name      group_name
1                 1             white          COlour   
1                 2             black           COlour   
1                 3             grey            COlour   
2                 4             formal          Style  
2                 5             casual         Style   

如果用户给出了一组过滤器ID,我想过滤产品,例如将filter_id分组,考虑到他们的group_id为ex。 select * from filter where filter_id in (1,2) AND filter_id in (4,5)当我使用此查询时,我得到空输出

为什么我在这里使用IN两次是因为1,2属于一个filter_group而4,5属于不同的filter_group,可以在表中添加组和过滤器,因此我将根据用户选择使用php生成动态查询。

任何人都可以帮我找到解决这个问题的方法,谢谢你提前

2 个答案:

答案 0 :(得分:0)

根据您提供的示例,您需要在这些子查询之间执行尽可能多的子查询,并在这些子查询之间使用inner join

SELECT product_id
FROM
  ( SELECT product_id
   FROM filter
   WHERE filter_id IN (1,
                       2)) group1 // Here you select white or black products 
INNER JOIN
  ( SELECT product_id
   FROM filter
   WHERE filter_id IN (4)) group2 // here products with Formal style
using(product_id) // Here both

答案 1 :(得分:0)

此查询对我有用:

load