2012-10-15 38 views
5

Làm cách nào bạn triển khai truy vấn chọn mỗi hàng thứ n, với NHibernate QueryOver, HQL hoặc Tiêu chí?Chọn mọi hàng thứ n bằng NHibernate

Hiện nay tôi sử dụng truy vấn T-SQL sau:

SELECT * FROM (
    SELECT *, ROW_NUMBER() OVER (ORDER BY Id) AS [Row] 
    FROM [TABLE_NAME] 
) x WHERE (x.[Row] % 100) = 0 

(Nhờ Marc Gravell)

Trả lời

0

Tương tự như L2S - không có dễ cách để làm điều này mà không cần SQL. Và cú pháp sẽ là DBMS cụ thể anyway.

+0

Giải pháp sử dụng row_number() là DBMS độc lập (như tất cả DBMS hiện đại hỗ trợ hiện nay). Điều duy nhất phụ thuộc DBMS là toán tử modulo. –

2

Bạn đã xem giải pháp sử dụng bảng lập chỉ mục trong tham gia chéo chưa? Những gì tôi có nghĩa là bạn có một bảng với nhiều hàng như bạn nghĩ rằng bạn sẽ cần với một cột được lập chỉ mục của các số nguyên đi từ 1-n trong mỗi hàng. Điều này có thể trong một cơ sở dữ liệu chủ có lẽ với một cột ngày bên cạnh nó - tuyệt vời của nó như thế nào hữu ích phương pháp này là. Truy vấn sẽ trông giống như

SELECT * FROM (
    SELECT *, ROW_NUMBER() OVER (ORDER BY Id) AS [Row] 
    FROM [TABLE_NAME] 
) x INNER JOIN [Index_Table] i ON i.Id*100=x.[Row] 
Các vấn đề liên quan