2012-10-15 49 views
5

如何实现一个查询,选择每第n行,使用NHibernate QueryOver,HQL或Criteria?使用NHibernate选择每第n行

目前我使用下面的T-SQL查询:

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

(感谢Marc Gravell

回答

0

同L2S - 没有容易的方式来做到这一点没有SQL。而语法无论如何都是DBMS特有的。

+0

使用row_number()的解决方案是漂亮的DBMS独立(因为所有现代DBMS支持,如今)。 DBMS唯一依赖的是模运算符。 –

2

您是否考虑过在交叉连接中使用索引表的解决方案?我的意思是,你有一个表格,其行数与你认为需要的行数一样多,每列中有1-n个整数的索引列。这可以在主数据库中,也可以在旁边有一个日期列 - 它的惊人的方法是多么有用。该查询看起来像

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]