如何在单个查询中从5000行获取1到20行

时间:2017-07-29 05:49:39

标签: sql sql-server

我正试图从5000行获得1到20行。我尝试进行单个查询,然后插入到虚拟表中,之后我计算来自虚拟表的行 得到1至20行。它有效,但需要更多时间。所以,你对此有任何想法,请告诉我。

SELECT * FROM CRM_Contacts

1 个答案:

答案 0 :(得分:2)

您可以在Sql Server 2012

中使用OFFSET Fetch
SELECT * 
FROM CRM_Contacts
ORDER BY Order_column 
OFFSET 0 ROWS FETCH NEXT 20 ROWS ONLY

旧版本使用Row_Number

select * from 
(
Select *, Row_Number()Over(Order by Order_column) as Rn
From Yourtable
) a
Where Rn between 1 and 20

如果总是排名前20,那么

SELECT top 20 * 
FROM CRM_Contacts
ORDER BY Order_column