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