2012-08-13 69 views
0

作爲以下SQL,它將選擇與搜索條件匹配的第100到第110個結果。但我認爲這個SQL很醜陋(使用兩次條件where [name] like '%%'),並且應該有一些簡短的陳述來達到相同的目標。SQL Server從多重分析結果集中選擇第n個到第n個

SELECT top 10 [name], [field1], [field2] 
FROM [FrontPageInformation] 
WHERE [name] LIKE '%%' AND [name] NOT IN 
     (SELECT TOP 100 [name] 
     FROM [EngineeringMedicine].[dbo].[FrontPageInformation] 
     WHERE [name] LIKE '%%') 

任何人都可以幫忙嗎?

十分感謝,

+1

'TOP'必須由'必須隨BY'獲得可預測的結果。 – 2012-08-13 10:29:41

回答

4

可以使用ROW_NUMBER()語法來獲取行號

如:

select [name],[field1],[field2] 
from 
(
    SELECT [name],[field1],[field2], ROW_NUMBER() OVER (ORDER BY something) as RN 
    FROM [FrontPageInformation] 
    WHERE [name] like '%something%' 
) v 
WHERE RN between 101 and 110 
+0

這似乎很好,但任何其他答案是值得歡迎的。 – Wawa 2012-08-14 09:06:23