【问题标题】:Order by, group by, first result in HQL (convert from Oracle SQL)排序依据,分组依据,HQL 中的第一个结果(从 Oracle SQL 转换)
【发布时间】:2013-12-06 12:55:01
【问题描述】:

如何在 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”日期时间列对表“room_history”排序,然后按“table_num”和“room_id”对分组,同时为每个组保留第一个“event_type”。上述查询适用于 Oracle,但我无法将其转换为 HQL。

目的是为“table_num”和“room_id”对获取最新的“event_type”。

【问题讨论】:

  • 这似乎是我似乎找不到合适的 HQL 语法来产生相同结果的问题。为什么我需要它作为 HQL 是因为我缩进在更大的查询中使用它,因此无法在我的应用程序端使用它。
  • 您可以发布您尝试过的HQL,以便我们指出错误。
  • 似乎 hql 中没有语法来实现这一点。找到了解决办法(见答案)

标签: java oracle hibernate hql sql-order-by


【解决方案1】:

这似乎是无法实现的

我最终改为转换以下 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_on> b.changed_on。

【讨论】:

    猜你喜欢
    • 2023-03-13
    • 1970-01-01
    • 1970-01-01
    • 2010-09-06
    • 2015-02-04
    • 2015-06-23
    • 1970-01-01
    • 1970-01-01
    • 2011-09-24
    相关资源
    最近更新 更多