我想将以下查询转换为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。
答案 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中对你有用。