如何使用row_number函数在Hibernate中编写查询?

时间:2014-06-17 10:24:27

标签: sql hql

我想将以下查询转换为HQL

select X.* from (select tbl.*,ROW_NUMBER() over (partition by Col1 order by Col1) as RANK from table1 tbl where tbl.col2='22'
                    and (
                        tbl.col3 in (
                            'ABC'
                        )
                    ) 
              ) X
             WHERE X.rank = 1;

需要帮助。 这是在Oracle上将MySQL组转换为等效组的上下文。

编辑: 我最初的MySQL查询是

select * from table1 tbl 
where tbl.col2='22'
and tbl.col3 in ('ABC','XYZ')
group by col1;

我想先将其转换为Oracle等效查询,然后转换为HQL。

1 个答案:

答案 0 :(得分:0)

我认为您的查询非常接近此查询:

select X.*
from table1 tbl
where tbl.col2 = '22' and tbl.col3 = 'ABC' and
      not exists (select 1
                  from table tbl2
                  where tbl2.col2 = tbl.col2 and tbl2.col3 = tbl.col3 and
                        tbl2.col1 < tbl.col1
                 );

唯一的区别是这两个查询如何处理col1上的关系。这将返回所有这些值。你的只会返回其中一个。

也许这在HQL中对你有用。