2012-05-09 3 views
3
私がここで特定の列の最大値を持ち、レコードを選択しようとしている

は、私がこれまで持っているものだJPQLは

SELECT * 
FROM order ord 
     INNER JOIN (SELECT ordernumber, 
          Max (version) AS version 
        FROM order 
        WHERE ordernumber = :ordernumber 
        GROUP BY ordernumber) mx 
     ON ord.ordernumber = mx.ordernumber 
      AND ord.version = mx.version; 

はありますとにかく、私は表現することができます:私は、次のSQLをより効率的になると思います

SELECT * 
FROM Order 
WHERE ordernumber = :orderNumber 
     AND orderversion = (SELECT Max(orderversion) 
          FROM order 
          WHERE ordernumber = :orderNumber); 

これはJPQLでですか?

+0

どのデータベースエンジンをお使いですか? – Jorge

+0

JPAプロバイダとしてOracleとHibernateを使用しています。 –

答えて

7

はありません、それが持つ上記のSQLクエリを生成することはできません(特定のフィールド上の最大値を持つレコードを選択に関する質問のためのオンラインのほとんどの答えは...私が提示していた上記のJPQLを示唆しているように見えます) HQL。 The documentationは言う:HQLのサブクエリが唯一の選択や 句で発生する可能性があります

注こと。