【问题标题】:Select every nth row with NHibernate使用 NHibernate 选择每第 n 行
【发布时间】:2012-10-15 14:37:04
【问题描述】:

您将如何使用 NHibernate QueryOver、HQL 或 Criteria 实现选择每 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

【问题讨论】:

    标签: sql sql-server nhibernate


    【解决方案1】:

    您是否考虑过在交叉连接中使用索引表的解决方案?我的意思是,您有一个表,其中包含您认为需要的行数,每行中的整数索引列从 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]
    

    【讨论】:

      【解决方案2】:

      与 L2S 相同 - 如果没有 SQL,则没有 简单 的方法可以做到这一点。无论如何,语法都是特定于 DBMS 的。

      【讨论】:

      • 使用 row_number() 的解决方案非常独立于 DBMS(因为现在所有现代 DBMS 都支持)。唯一依赖于 DBMS 的是模运算符。
      猜你喜欢
      • 2022-12-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-23
      • 1970-01-01
      相关资源
      最近更新 更多