如何实现一个查询,选择每第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)
如何实现一个查询,选择每第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)
同L2S - 没有容易的方式来做到这一点没有SQL。而语法无论如何都是DBMS特有的。
您是否考虑过在交叉连接中使用索引表的解决方案?我的意思是,你有一个表格,其行数与你认为需要的行数一样多,每列中有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]
使用row_number()的解决方案是漂亮的DBMS独立(因为所有现代DBMS支持,如今)。 DBMS唯一依赖的是模运算符。 –