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

Terapkan fungsionalitas paging (lewati / ambil) dengan kueri ini

Di SQL Server 2012 sangat sangat mudah

SELECT col1, col2, ...
 FROM ...
 WHERE ... 
 ORDER BY -- this is a MUST there must be ORDER BY statement
-- the paging comes here
OFFSET     10 ROWS       -- skip 10 rows
FETCH NEXT 10 ROWS ONLY; -- take 10 rows

Jika kita ingin melewati ORDER BY kita bisa menggunakan

SELECT col1, col2, ...
  ...
 ORDER BY CURRENT_TIMESTAMP
OFFSET     10 ROWS       -- skip 10 rows
FETCH NEXT 10 ROWS ONLY; -- take 10 rows

(Saya lebih suka menandainya sebagai peretasan - tetapi ini digunakan, misalnya oleh NHibernate. Untuk menggunakan kolom yang diambil dengan bijak karena ORDER BY lebih disukai)

untuk menjawab pertanyaan:

--SQL SERVER 2012
SELECT PostId FROM 
        ( SELECT PostId, MAX (Datemade) as LastDate
            from dbForumEntry 
            group by PostId 
        ) SubQueryAlias
 order by LastDate desc
OFFSET 10 ROWS -- skip 10 rows
FETCH NEXT 10 ROWS ONLY; -- take 10 rows

Kata kunci baru offset dan fetch next (hanya mengikuti standar SQL) diperkenalkan.

Tapi saya rasa, Anda tidak menggunakan SQL Server 2012 , benar ? Pada versi sebelumnya agak (sedikit) sulit. Berikut adalah perbandingan dan contoh untuk semua versi server SQL:di sini

Jadi, ini bisa bekerja di SQL Server 2008 :

-- SQL SERVER 2008
DECLARE @Start INT
DECLARE @End INT
SELECT @Start = 10,@End = 20;


;WITH PostCTE AS 
 ( SELECT PostId, MAX (Datemade) as LastDate
   ,ROW_NUMBER() OVER (ORDER BY PostId) AS RowNumber
   from dbForumEntry 
   group by PostId 
 )
SELECT PostId, LastDate
FROM PostCTE
WHERE RowNumber > @Start AND RowNumber <= @End
ORDER BY PostId


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana saya bisa menarik daftar ID dari tabel SQL sebagai string nilai yang dipisahkan koma?

  2. SQL Server - menghentikan atau menghentikan eksekusi skrip SQL

  3. Bagaimana saya bisa mendapatkan daftar nama elemen dari nilai XML di SQL Server

  4. Bagaimana Menambahkan ATAU Menjatuhkan Kolom Dari Tabel yang Diaktifkan CDC Tanpa Kehilangan Data di Database SQL Server - Tutorial SQL Server

  5. SQL Query Where Column ='' mengembalikan karakter Emoji dan