Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Solusi paging terbaik menggunakan SQL Server 2005?

Untuk tabel sebesar itu, gunakan Common-Table Expression (CTE) dan ROW_NUMBER; gunakan fungsi kecil untuk menghitung catatan yang akan dikembalikan berdasarkan @PageNumber dan @PageSize variabel (atau apa pun yang Anda ingin menyebutnya). Contoh sederhana dari salah satu prosedur tersimpan kami:

-- calculate the record numbers that we need

DECLARE @FirstRow INT, @LastRow INT
SELECT  @FirstRow   = ((@PageNumber - 1) * @PageSize) + 1,
        @LastRow    = ((@PageNumber - 1) * @PageSize) + @PageSize

;
WITH CTE AS
(
    SELECT [Fields]
           , ROW_NUMBER() OVER (ORDER BY [Field] [ASC|DESC]) as RowNumber 
    FROM [Tables]
    WHERE [Conditions, etc]
)
SELECT * 
       -- get the total records so the web layer can work out
       -- how many pages there are
       , (SELECT COUNT(*) FROM CTE) AS TotalRecords
FROM CTE
WHERE RowNumber BETWEEN @FirstRow AND @LastRow
ORDER BY RowNumber ASC


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tambahkan batasan unik ke kombinasi dua kolom

  2. Perbaiki "Kesalahan overflow aritmatika mengonversi IDENTITAS ke tipe data ..." di SQL Server

  3. Kueri Select SUM saya mengembalikan nol. Itu harus mengembalikan 0

  4. CAST() vs TRY_CAST() di SQL Server:Apa Bedanya?

  5. Buat Akun Email Database di SQL Server (T-SQL)