Tôi đã cố gắng hiểu một chút về cách triển khai phân trang tùy chỉnh trong SQL, ví dụ: đọc articles like this one.Thực hiện chức năng phân trang (bỏ qua/lấy) với truy vấn này
Tôi có truy vấn sau, hoạt động hoàn hảo. Nhưng tôi muốn thực hiện phân trang với cái này.
SELECT TOP x PostId FROM (SELECT PostId, MAX (Datemade) as LastDate
from dbForumEntry
group by PostId) SubQueryAlias
order by LastDate desc
gì là nó Tôi muốn
Tôi có bài viết diễn đàn, với mục có liên quan. Tôi muốn nhận các bài đăng có các mục nhập mới nhất, vì vậy tôi có thể chọn các bài đăng được tranh luận gần đây.
Bây giờ, tôi muốn có thể nhận được "10 đến 20 bài đăng hoạt động gần đây nhất", thay vì "top 10".
có gì tôi đã cố gắng
Tôi đã cố gắng để thực hiện các chức năng ROW là một trong bài viết, nhưng thực sự không có may mắn.
Bất kỳ ý tưởng nào về cách triển khai?
Cảm ơn rất nhiều! Đó là một câu trả lời thực sự tốt! Chỉ câu hỏi về sql 2008. Tôi muốn ORDER BY xảy ra trước WHERE, vì nó hiện đang sắp xếp tập hợp con, nhưng chúng tôi muốn chọn thứ gì đó từ toàn bộ ... Bất kỳ ý tưởng nào? :) Một lần nữa, cảm ơn –
Nếu tôi hiểu chính xác bạn, bạn muốn sắp xếp theo LastDate, phải không? sau đó chúng ta có thể thay đổi mệnh đề OVER() theo cách này: ROW_NUMBER() OVER (ORDER BY ** MAX (Datemade) desc **). * Và loại bỏ ORDER cuối cùng bởi PostId *. Bây giờ CTE nên được sắp xếp 'sớm hơn' khi cần thiết. chính xác? –
Cảm ơn bạn điều này đã giúp, một lưu ý về mẫu 2012, thứ tự là bắt buộc, tôi đã thử điều này mà không cần mệnh lệnh và có lỗi "cú pháp sai" không biết có gì sai cho đến khi tôi nhìn vào cú pháp MSDN và biết thứ tự đó là bắt buộc. – Esen