2016-10-09 69 views
1

我有一個表的數據像這樣與最高值選擇行,其中1列是唯一

--------------------- 
Name | Image | Points 
--------------------- 
Bob | a.jpg | 100 
Bob | b.jpg | 56 
Sal | c.jpg | 87 
Jim | d.jpg | 34 
Bet | e.jpg | 23 
Bren | f.jpg | 5 
Bren | g.jpg | 15 
Test | h.jpg | 10 

我想要做的就是選擇5行最高的「點」,但不採取複製「名稱」考慮到。

只是選擇最高5將返回


Name | Image | Points 
--------------------- 
Bob | a.jpg | 100 
Sal | c.jpg | 87 
Bob | b.jpg | 56 
Jim | d.jpg | 34 
Bet | e.jpg | 23 

但我不希望包括重複行,因此第二鮑勃在上面會被刪除,「布倫| g.jpg | 15 「將代替添加

任何幫助表示讚賞謝謝

回答

0

您可以使用NOT EXISTS()

SELECT * FROM YourTable t 
WHERE NOT EXISTS(SELECT 1 FROM YourTable s 
       WHERE t.name = s.name AND s.points > t.points) 
ORDER BY t.points DESC 
LIMIT 5 
+0

謝謝你的工作 –

0

或者我覺得簡單/整潔和在不需要查詢是使用group by避免重複

SELECT * FROM YourTable t 
    GROUP BY Name 
    ORDER BY t.points DESC 
LIMIT 5