【问题标题】:MS Sql query to Hibernate HQLMS Sql 查询到 Hibernate HQL
【发布时间】:2016-02-28 08:53:30
【问题描述】:

如何将下面的 sql 转换为 HQL

select max(id) from mytable where id in (select top 10 id from mytable where mycolumn-value = 1234 order by id)

【问题讨论】:

    标签: sql hibernate hql jpql


    【解决方案1】:

    您不能完全等同于 JPQL,因为无法在使用 JPQL 的子查询中使用 top(或 limitrownum... 每个数据库使用不同的)。

    但是你使用这样的东西:

    select max(mt.id) from mytable mt where mt.id in 
       (select mt2.id from mytable mt2 where mt2.mycolumn-value = 1234 order by mt2.id)
    

    此查询忽略子查询的顶部,不会影响预期结果。

    【讨论】:

    • 我不认为上面的查询会产生我预期的结果,因为它看起来基本上只是返回给定 mycolumn-value 的 max(id) 而不是给定计数的 id。跨度>
    • @Chris,但上面的查询返回的结果与您的查询不同?
    • 哦,我现在明白了 :) 谢谢。
    猜你喜欢
    • 2017-01-06
    • 1970-01-01
    • 1970-01-01
    • 2014-12-15
    • 2011-05-18
    • 2013-09-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多