我该如何编写这个SQL查询?前3个最匹配的结果

时间:2011-12-22 18:28:59

标签: sql sql-server-2008

我正在寻找一个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。

谢谢

1 个答案:

答案 0 :(得分:1)

假设每个属性都在它自己的行中:

select top 3 id
from MyTable 
where attrib in ('A', 'B', 'C')
group by id
order by count(distinct attrib) desc