0

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

包含 styleID 4 和 styleID 3 以及 colorID 1 和 colorID 5 的 boxID 将首先显示,因为它匹配所有条件。

ID boxID styleID colorID keys 
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 不是蓝色
6 2 4 6 Cyan is Purple
7 3 4 2 Fancy
8 3 4 5 花式
9 3 4 2 花式
4

1 回答 1

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

于 2012-05-07T14:52:14.160 回答