2011-04-10 56 views
0

我已經包含了用戶的數據表,我首先需要用戶前如何限制SQL Server的結果?

id-username 
1-john 
2-fredrek 
3-sara 
4-sarah 

我需要fredrek, sara後得到的只有最後2個用戶 - 如何在SQL Server中做到這一點?

我知道這樣做與MySQL我用LIMIT1,2但與SQL Server我不能

+3

同樣的事情已經鐵餅sed:http://stackoverflow.com/questions/971964/limit-10-20-in-sqlserver – Senthil 2011-04-10 09:34:36

回答

0

可以在T-SQL中使用TOP:

SELECT TOP 2 FROM table_name 
0

你必須做一個雙重查詢:

select * from (select top 10 * from (
    select top 20 * from table_name order by 1 asc 
    ) as tb_name order by 1 desc 
    ) as tb_name_last 
    order by whathever; 
2

爲了避免您可以使用ROW_NUMBER 2×TOP(注:你不能在一個語句的WHERE子句中直接使用ROW_NUMBER輸出)

;WITH cRN AS 
(
    SELECT 
    ROW_NUMBER() OVER (ORDER BY id) AS rn, 
    username 
    FROM 
    mytable 
) 
SELECT username 
FROM cRN 
WHERE rn BETWEEN 2 AND 3 
+0

你有沒有簡單的解決方案? – 2011-04-10 10:12:44

+2

這是簡單的解決方案。 SQL Server中沒有LIMIT功能(直到下一個版本)。 – gbn 2011-04-10 10:13:26

+0

和我可以使用這種方式與PHP mssql_query(); – 2011-04-10 11:12:05

1

您可以使用TOP,限制WEHRE子句中,不拿第一寄存器

SELECT TOP 2 * 
FROM MyTable 
WHERE Id > 1