我正在寻找一个SQL查询,它给出了前3个最匹配的结果。
查找ID包含属性A,B,C
id | attribs | results (# of matches)
----+-----+-----+----
1 | A,B,C | 3
2 | A | 1
3 | A,B | 2
4 | A,D | 2
5 | E | 0
在这个例子中,我想返回id 1,3,4
这可以仅使用SQL查询来完成吗?
我正在使用SQL Server 2008。
谢谢
答案 0 :(得分:1)
假设每个属性都在它自己的行中:
select top 3 id
from MyTable
where attrib in ('A', 'B', 'C')
group by id
order by count(distinct attrib) desc