2012-02-03 35 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 */