2011-12-22 87 views
-1

我正在查找一個SQL查詢,該查詢爲我提供了前3個最匹配的結果。如何編寫此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只使用SQL查詢1,3,4

可以這樣做?

我使用SQL Server 2008的

謝謝

+2

什麼是你的表結構?目前還不清楚每個屬性是否在自己的行列。 – RedFilter 2011-12-22 18:32:26

+0

你可以使用select top子句嗎?即SELECT TOP 3 id FROM theTable WHERE whatever – 2011-12-22 18:34:52

+0

每個attrib都有它自己的行。所以一行就像1-A,1-B,1-C,2-A,3-A等。 – shinya 2011-12-22 21:22:19

回答

1

假設每個ATTRIB是在其自己的行:

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

我不得不顛倒group和Where子句,但它的工作原理! 非常感謝您的幫助! – shinya 2011-12-22 21:31:23

+0

修復了我的查詢。 – RedFilter 2011-12-22 21:47:24