2011-04-10 57 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