2

私は 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 内に配置して、毎回特定の数のレコードのみを取得する方法はありますか?

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 に答える