Sql 如何在Hibernate中编写包含行数函数的查询?
我想将以下查询转换为HQLSql 如何在Hibernate中编写包含行数函数的查询?,sql,hql,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'
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 group by转换为等效group by的上下文中实现的
编辑:
我最初的MySQL查询是
select * from table1 tbl
where tbl.col2='22'
and tbl.col3 in ('ABC','XYZ')
group by col1;
我想先将其转换为Oracle等效查询,然后再转换为HQL。我认为您的查询与此查询非常接近:
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中适用。如果Col1不是数字数据类型,该怎么办?上述内容应该在Oracle和MySQL中都适用,很可能在HQL中也适用。My的目的是模拟group by,如果存在重复的值,则查询可能返回重复的值col1@user3705949 . . . 如果表中有唯一的id,则可以修复此问题。您的原始查询依赖于GroupBy的仅MySQL扩展,因此无论如何都很难移植。