我想在多个输入上搜索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
答案 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;