Geo*_*old 3 mysql sql hibernate jpa
给定一个带有name和rank列的表结构,有可能存在重复name,我怎样才能获得唯一的行name,最大值rank?
例如,假设以下数据:
+-------+-------+
| name | rank |
+-------+-------+
| a | 1 |
| a | 2 |
| b | 10 |
| b | 20 |
| c | 100 |
| c | 200 |
+-------+-------+
Run Code Online (Sandbox Code Playgroud)
查询应该返回:
+-------+-------+
| a | 2 |
| b | 20 |
| c | 200 |
+-------+-------+
Run Code Online (Sandbox Code Playgroud)
我有以下解决方案非常慢,我怀疑是O(N ^ 2).
SELECT name,
rank
FROM books temp1
WHERE rank = (SELECT max(rank)
FROM book temp2
WHERE temp1.name = temp2.name)
Run Code Online (Sandbox Code Playgroud)
可以改进吗?有没有更好的方法来做到这一点?
我正在使用MySQL,最终必须将其转换为JPA,所以如果有一个JPA/Hibernate习惯用法也会非常感激.
| 归档时间: |
|
| 查看次数: |
1688 次 |
| 最近记录: |