2012-02-03 70 views
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中,不知何故,每次只获得一定数量的记录?

回答

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 */