mysql - 如何将以下 sql 查询转换为 HQL 查询

标签 mysql hibernate hql

我有以下查询。如何将以下查询转换为 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;

最佳答案

我认为这应该有效(未经测试):

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
)

编辑:请记住,如果一个类型对于多个品种具有相同的价格,所有这些行都将通过此查询选择。

关于mysql - 如何将以下 sql 查询转换为 HQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17161993/

相关文章:

java - 如何在一对多 hibernate 中向现有数据插入或添加新行

java - Hibernate锁导致脏收集异常

java - 以下在 where 子句中使用 null 的 HQL 查询有什么区别?

mysql - Hibernate 按可能为空的字段排序

mysql - 无法登录 Sonar

mysql行号实现始终是增量的(从1到n排序)

mysql - 跨多个服务器连接表

java - 如何查询按计数分组的对象列表(按最后一天的提及频率)

hadoop - 创建配置单元表时出错

mysql - 插入分区表需要很长时间