回答: はい、LIMIT キーワードと OFFSET キーワードを使用して、Golang でデータベース クエリのページネーションを行うことができます。手順は次のとおりです。 各ページに表示するレコード数 (pageSize) を決定します。オフセット (offset) を 0 から計算します。 fmt.Sprintf を使用してクエリ文字列を動的に構築し、pageSize と offset の値を挿入します。フェッチするレコード数を制限するには LIMIT を使用し、前のレコードをスキップするには OFFSET を使用します。 rows オブジェクトを使用して結果セットを反復処理し、Scan 関数を使用して各行の値を抽出します。
Golang でデータベース クエリをページ分割する方法
ページ分割は、ユーザーが指定したサイズで大量のデータの一部を表示できるようにする Web アプリケーションの一般的な機能です。 Golang では、LIMIT
キーワードと OFFSET
キーワードを使用してクエリをページ分割できます。 LIMIT
和 OFFSET
关键字对查询进行分页。
package main import ( "database/sql" "fmt" ) func main() { db, err := sql.Open("mysql", "user:password@tcp(localhost:3306)/dbname") if err != nil { panic(err) } defer db.Close() // 每页显示 10 条记录 pageSize := 10 // 获取第 2 页的数据,OFFSET 从 0 开始 offset := (2 - 1) * pageSize // 编写分页查询 query := fmt.Sprintf(` SELECT id, name FROM users LIMIT %d OFFSET %d `, pageSize, offset) rows, err := db.Query(query) if err != nil { panic(err) } defer rows.Close() // 遍历结果集 for rows.Next() { var id int var name string if err := rows.Scan(&id, &name); err != nil { panic(err) } fmt.Println(id, name) } }
在这个示例中:
pageSize
指定每页显示的记录数。offset
根据当前页数计算偏移量,以便跳过前面的记录。query
字符串使用 fmt.Sprintf
动态构建,插入 pageSize
和 offset
值。LIMIT
限制要获取的记录数,并使用 OFFSET
跳过前面的记录。rows
对象用于遍历结果集,Scan
rrreeepageSize
は、ページごとに表示するレコード数を指定します。 🎜offset
現在のページ番号に基づいてオフセットを計算し、前のレコードをスキップします。 🎜query
文字列は、fmt.Sprintf
を使用して動的に構築され、pageSize
と offset
の値が挿入されます。 🎜LIMIT
を使用して取得するレコードの数を制限し、OFFSET
を使用して前のレコードをスキップします。 🎜rows
オブジェクトは結果セットを走査するために使用され、Scan
関数は各行の値を抽出するために使用されます。 🎜🎜以上がGolang でデータベース クエリをページネーションするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。