Java Order by、group by、HQL中的第一个结果(从Oracle SQL转换)
如何在Hibernate HQL中表示以下Oracle SQLJava Order by、group by、HQL中的第一个结果(从Oracle SQL转换),java,oracle,hibernate,hql,sql-order-by,Java,Oracle,Hibernate,Hql,Sql Order By,如何在Hibernate HQL中表示以下Oracle SQL select table_num , room_id , min(event_type) keep(dense_rank first order by changed_on desc) from room_history group by table_num, room_id; 查询背后的想法是按“changed_on”datetime列对表“room_history”排序,然后按“table_num”和“room_id”对分
select table_num
, room_id
, min(event_type) keep(dense_rank first order by changed_on desc)
from room_history
group by table_num, room_id;
查询背后的想法是按“changed_on”datetime列对表“room_history”排序,然后按“table_num”和“room_id”对分组,同时为每个组保留第一个“event_type”。上面提到的查询适用于Oracle,但我在将其转换为HQL时遇到困难
目的是获取“table_num”和“room_id”对的最新“event_type” 这似乎是不可能实现的 我最终转换了下面的SQL查询。它并不完美,但它确实符合我的目的
select table_num, event_type et from room_history where id in (select max(id) from privacy_history group by msisdn);
我能够做这个假设,因为当这个表总是a.id>b.id,然后a.changed\u on>b.changed\u on时。这似乎是一个问题,我似乎找不到合适的HQL语法来产生相同的结果。我之所以需要HQL是因为我缩进以在更大的查询中使用它,因此无法在我的应用程序端使用它。您可以发布您尝试过的HQL,以便我们指出错误。HQL中似乎没有语法来实现这一点。找到了解决方法(见答案)