Saya telah mencoba untuk memahami sedikit tentang bagaimana menerapkan paging kustom di SQL, misalnya membaca artikel seperti ini .
Saya memiliki pertanyaan berikut, yang berfungsi dengan sempurna. Tapi saya ingin menerapkan paging dengan yang satu ini.
SELECT TOP x PostId FROM ( SELECT PostId, MAX (Datemade) as LastDate
from dbForumEntry
group by PostId ) SubQueryAlias
order by LastDate desc
Apa yang saya inginkan
Saya memiliki posting forum, dengan entri terkait. Saya ingin mendapatkan postingan dengan entri terbaru yang ditambahkan, jadi saya dapat memilih postingan yang baru-baru ini diperdebatkan.
Sekarang, saya ingin mendapatkan "10 teratas hingga 20 postingan yang baru-baru ini aktif", bukan "10 teratas".
Apa yang sudah saya coba
Saya telah mencoba menerapkan fungsi ROW seperti yang ada di artikel, tetapi benar-benar tidak berhasil.
Ada ide bagaimana menerapkannya?
sumber
WHERE RowNumber >= @Start AND RowNumber < @End
untuk mendapatkan 1000 baris pertama jika@Start
0 dan@End
1000?Untuk melakukan ini di SQL Server, Anda harus mengurutkan kueri menurut kolom, sehingga Anda bisa menentukan baris yang Anda inginkan.
Contoh:
select * from table order by [some_column] offset 10 rows FETCH NEXT 10 rows only
Dan Anda tidak dapat menggunakan kata kunci "TOP" saat melakukan ini.
Anda dapat mempelajari lebih lanjut di sini: https://technet.microsoft.com/pt-br/library/gg699618%28v=sql.110%29.aspx
sumber
OFFSET 10 ROWS -- skip 10 rows FETCH NEXT 10 ROWS ONLY; -- take 10 rows
gunakan ini di akhir sintaks pilihan Anda. =)
sumber
SQL 2008
Jawaban Radim Köhler berhasil, tetapi ini adalah versi yang lebih pendek:
select top 20 * from ( select *, ROW_NUMBER() OVER (ORDER BY columnid) AS ROW_NUM from tablename ) x where ROW_NUM>10
Sumber: https://forums.asp.net/post/4033909.aspx
sumber
Perbaikannya adalah dengan memodifikasi file EDMX Anda, menggunakan editor XML, dan mengubah nilai ProviderManifestToken dari 2012 ke 2008 . Saya menemukan itu di baris 7 di file EDMX saya. Setelah menyimpan perubahan itu, paging SQL akan dibuat menggunakan sintaks "lama" yang kompatibel dengan SQL Server 2008.
Saya minta maaf untuk memposting jawaban di utas yang sangat lama ini. Mempostingnya untuk orang-orang seperti saya, saya menyelesaikan masalah ini hari ini.
sumber
Anda dapat menggunakan kueri bersarang untuk penomoran halaman sebagai berikut:
Paging dari 4 Baris ke 8 Baris di mana ID Pelanggan adalah kunci utama .
SELECT Top 5 * FROM Customers WHERE Country='Germany' AND CustomerId Not in (SELECT Top 3 CustomerID FROM Customers WHERE Country='Germany' order by city) order by city;
sumber