2013-06-18 46 views
0

我有以下查询。如何将以下查询转换为HQL查询。如何我可以将以下SQL查询转换为HQL查询

+--------+------------+-------+ 
| type | variety | price | 
+--------+------------+-------+ 
| apple | gala  | 2.79 | 
| apple | fuji  | 0.24 | 
| apple | limbertwig | 2.87 | 
| orange | valencia | 3.59 | 
| orange | navel  | 9.36 | 
| pear | bradford | 6.05 | 
| pear | bartlett | 2.14 | 
| cherry | bing  | 2.55 | 
| cherry | chelan  | 6.33 | 
+--------+------------+-------+ 

我希望得到以下结果

+--------+----------+-------+ 
| type | variety | price | 
+--------+----------+-------+ 
| apple | fuji  | 0.24 | 
| orange | valencia | 3.59 | 
| pear | bartlett | 2.14 | 
| cherry | bing  | 2.55 | 
+--------+----------+-------+ 

select f.type, f.variety, f.price 
from (
    select type, min(price) as minprice 
    from fruits group by type 
) as x inner join fruits as f on f.type = x.type and f.price = x.minprice; 

回答

0

我认为这应该工作(未测试):

select f.type, f.variety, f.price 
from fruits f 
where f.price = (
    select min(f2.price) 
    from fruits f2 
    where f2.type = f.type 
) 

编辑:请记住,如果type有同一个price多于一个variety,比所有这些行将被选中与此查询。

+0

我可以使用连接写这个吗 – PSR

+0

从文档:* HQL子查询只能出现在select或where子句中* http://docs.jboss.org/hibernate/core/3.6/reference/en-US/html /queryhql.html#queryhql-subqueries – lunr

+0

但它给我的所有记录。我只需要最高记录 – PSR