考慮到與name
和rank
列的表結構後列編組,與正在那裏進行重複的name
的可能性,我怎麼能得到通過name
獨特的行,最大rank
?SQL:排序
例如,假定如下的數據:
+-------+-------+
| name | rank |
+-------+-------+
| a | 1 |
| a | 2 |
| b | 10 |
| b | 20 |
| c | 100 |
| c | 200 |
+-------+-------+
查詢應返回:
+-------+-------+
| a | 2 |
| b | 20 |
| c | 200 |
+-------+-------+
我有以下的解決方案,是極其緩慢的,我懷疑是O(N^2 )。
SELECT name,
rank
FROM books temp1
WHERE rank = (SELECT max(rank)
FROM book temp2
WHERE temp1.name = temp2.name)
可以改進嗎?有沒有更好的方法來做到這一點?
我正在使用MySQL,並且這最終必須轉換爲JPA,所以如果有這樣的JPA/Hibernate成語,也將非常感激。
衛生署!很簡單,謝謝。 – 2011-02-25 22:33:13