2

我正在使用数据表 jquery 插件。

我只想将每个查询显示所需的记录拉到数据库中,因为表中可能有成千上万条记录。因此,由于分页,而不是做这样的事情并调用表中的每条记录并且一次只显示一定数量的记录......

<cfquery name="get_users" datasource="dsn">
    select user_id, first_name, last_name
    from users
</cfquery>

<cfloop query="get_users" startrow="#startrow#" endrow="#endrow#">
    ...
</cfloop>

有没有办法将 startrow 和 endrow 放在 cfquery 标记内或以某种方式放在 sql 内,每次只能获得一定数量的记录?

4

1 回答 1

7

您需要将每个“页面”的起始点和记录数发送到数据库,并让它只返回这些记录。我不知道您使用的是什么数据库,但这里有一个查询 MS SQL Server (2005+) 的示例:

SELECT user_id, first_name, last_name
FROM (
  SELECT ROW_NUMBER() OVER(
    ORDER BY last_name, first_name 
  ) AS rownum, user_id, first_name, last_name
  FROM users
) AS users_page
WHERE rownum >= 1000 AND rownum <= 1010
ORDER BY last_name, first_name

这将为您提供从 1000 到 1010 的记录页面。

这是mysql版本:

SELECT user_id, first_name, last_name
FROM users
ORDER BY last_name, first_name
LIMIT 999, 10 /* offset is zero-indexed in mysql */
于 2012-02-03T20:48:33.287 回答