在查询中实现分页的最佳方法

时间:2010-12-01 16:25:22

标签: mysql

我想知道在查询中实现分页的最佳方法。

目前,我正在做这样的事情:

SELECT
  columns
FROM
  (SELECT columns FROM table ORDER BY column)
WHERE
  rownum BETWEEN start AND end

这是最好的方法吗?

2 个答案:

答案 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。