nHibernate HQL查询中的最大日期

4

我有一些困难在编写hql查询时,需要查询符合特定条件的所有行,但我只想返回日期最大的那一行。

例如,查询的where子句可能如下所示:

column1 = input1 and column2 = input2 and date_column < date_input

这可能会返回多行不同日期的结果,但我只对具有最新日期的行感兴趣。我还需要它返回整行的信息。

目前,我按照日期降序排序并在C#中获取第一项来执行查询。 如果可能的话,我希望能够使用hql查询或iCriteria解决方案一步完成。

1个回答

6

您只需要使用子查询。选择符合条件的行中的最大日期,然后选择所有与最大日期匹配的记录。我的HQL有点生疏,但是您可以理解这个思路。

from TableA a 
where a.Date in (
    select max(b.Date) 
    from TableA b 
    where b.Something="You get the idea"
)

Subqueries, Aggregate Function


这将获取TableA中所有日期等于子查询选择的日期的行,因此子查询中的where条件不适用于主查询。 - zaq
我原以为日期是唯一的。你为什么不把“where”条件应用到主查询和子查询中呢? - Mark Perry

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接