搜索多列返回的大多数匹配项

时间:2012-05-07 14:29:34

标签: mysql sql count

我想在多个输入上搜索styleID和colorID字段。例如,我想搜索styleID = 3,styleID = 4,colorID = 1,colorID = 5的表格,然后按boxID对这些结果进行分组。按照该组中实际匹配的数量对结果进行排序。

包含styleID为4且styleID为3且colorID为1且colorID为5的boxID将首先显示,因为它符合所有条件。

ID  boxID       styleID     colorID     keywords
1 1 4 1 Sexy Tie
2 1 3 2 Red Tie
3 1 3 6 Striped Blue
4 2 3 2 Checkers
5 2 3 5 It's not blue
6 2 4 6 Cyan is purple
7 3 4 2 Fancy
8 3 4 5 Fancy
9 3 4 2 Fancy

1 个答案:

答案 0 :(得分:2)

你可以尝试类似的东西

select boxId, sum(matches) 
from (select boxID, 
      (case when styleId IN (4) then 1 else 0 end) + 
      (case when colorId in (1, 5) then 1 else 0 end) matches 
       from test) t1
group by boxId
order by sum(matches) desc;

http://sqlfiddle.com/#!2/b5879/20