我有母子表关系:要素——(1-n)-> 内容栏。 每一条内容 环行有:独一无二的Id(Id)、ElementId、版本,然后是一些不太相关的领域。 I m 试图获得其最高版本(和Id)的所有内容。
我有这样一席之地,给我我希望:
SELECT * FROM ContentBlocks WHERE Id IN
(SELECT MAX(Id) FROM ContentBlocks GROUP BY ElementId)
(假设最新版本的Id最高)
然而,我可以说明如何从NHibernate那里获得。 这是我最接近的:
var subquery = DetachedCriteria.For<ContentBlock>()
.SetProjection( Projections.Max( "Id" ) )
.SetProjection( Projections.GroupProperty( "ElementId" ) );
var query = session.CreateCriteria<ContentBlock>()
.Add( Subqueries.PropertyIn( "Id", subquery ) ).List<ContentBlock>();
如果我执行分局,我就在表格中找到一份独特的要素清单。 相反,我需要新内容提要清单。 如果我推翻了有关分局的分局预测顺序,那么我就达到了完成的任务。
我也试图这样做:
subquery = DetachedCriteria.For<ContentBlock>()
.SetProjection(
Projections.ProjectionList()
.Add( Projections.Max( "Id" ) )
.Add( Projections.GroupProperty( "ElementId" ) )
);
但是,我收到了一份清单,其中含有2个要素,即Id & ElementId,而创建标准会要求这样做。
是否有办法不将集团财产“ElementId”列入结果? 或者说,我要回去马克斯(Id)?