如何从查询中仅提取显示所需的记录?

时间:2012-02-03 20:28:08

标签: sql coldfusion datatables jquery-datatables

我正在使用datatables 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内,以便每次只获取一定数量的记录?

1 个答案:

答案 0 :(得分: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 */
相关问题