我很难代表这个查询,我从给定的'uid'中选择最大月份和最大年份行。我有6个数据,其中3个数据有uid'4',其他3个数据有uid'5'。我想从uid 4和5获得最大月份和最大年份数据。这是我的标准查询我得到了这个结果。
结果清单大小:2
uID:5 nID:cdf月份:11年:2012年 uID:4 nID:f58月:10年:2012
但是当我从2012年到2013年改变uid年份时,它只返回uid 4行。
DetachedCriteria maxYearQuery = DetachedCriteria.forClass(Demo.class);
ProjectionList yearProj = Projections.projectionList();
yearProj.add(Projections.max("contextYear"));
yearProj.add(Projections.max("contextMonth"));
yearProj.add(Projections.groupProperty("entityUUID"));
maxYearQuery.setProjection(yearProj);
Criteria crit = session.createCriteria(Demo.class);
crit.add(Subqueries.propertiesIn(new String[] {"contextYear","contextMonth", "entityUUID"}, maxYearQuery));
crit.addOrder(Order.desc("entityUUID"));
我的桌子看起来像这样..
>
uID:4 nID:cdf月:10年:2012
uID:4 nID:f58月:9年:2012
uID:5 nID:f58月:8年:2012
uID:5 nID:f58月:11年:2012
uID:5 nID:f58月:10年:2013
uID:4 nID:f58月:9年:2012
我想要数据库中的第1和第5条记录。我被困在这个阶段。请给出一些指导,以便通过分组获得记录。
提前致谢。
答案 0 :(得分:0)
您想要这种类型的查询
通过uid从演示组中选择最大(月),最大(年);
答案 1 :(得分:0)
我找到了你的问题的解决方案
表的名称是Demo,其中三列是uid,month,year
查询:
从演示中选择a.uid,a.year,max(月)一个内连接(从演示组中选择uid,max(year)m乘以1)d。在a.uid = d.uid和a.year = dm group by 2;
它会工作正常检查并给我反馈