我想知道在查询中实现分页的最佳方法。
目前,我正在做这样的事情:
SELECT
columns
FROM
(SELECT columns FROM table ORDER BY column)
WHERE
rownum BETWEEN start AND end
这是最好的方法吗?
答案 0 :(得分:1)
在SQL Server中,我将使用以下内容:
SELECT DISTINCT *
FROM (SELECT TOP (@lim) ROW_NUMBER() OVER (ORDER BY sometable.id ASC) AS row,
sometable.id AS id,
sometable.name as name
FROM sometable) as tratable
WHERE Row > @start AND Row <= @lim
答案 1 :(得分:0)
是的,这是迄今为止我所知道的最佳方式。如果您正在使用SQL Server,则可以将Row_Number和CTE组合在一起。看看http://www.sqlteam.com/article/server-side-paging-using-sql-server-2005
和MySQL
SELECT MyField
FROM sometable
LIMIT [offset], [pagesize]
当然你应该用适当的值替换[offset]和pagesize。