我最近創建了一個問題,雖然它沒有措辭良好,沒有示例,但一位成員建議我應該重新創建問題,因爲過去沒有答案。MySQL PDO;從排序的結果中獲取排名,並且它的唯一位置
我想從有序查詢中獲得一個行的位置,以最有效的方式。我計劃搜索超過10,000條結果,所以我需要儘可能高效。
我現在有
SELECT p.*,
(SELECT count(DISTINCT prank)+1
FROM uprofile WHERE prank > p.prank
) AS POSITION
FROM uprofile p
WHERE uid = " . $profile->data()->uid . "
ORDER BY prank DESC
應該輸出位置2; uid
是值31,並且具有uid值爲'31'的uprofile行具有第二大玩家惡作劇(惡作劇)。
這一切都很好,除了兩行具有相同的聲譽。我目前的數據,只有3行填充玩家等級。其餘的虛擬行將惡作劇設置爲0,這導致它們的位置全部爲4.
如何修改SQL以返回唯一值,而不是具有相同位置的某些行?
發現的例子,因爲它似乎順序由惡作劇遞減定義,只是使用的各種各樣一個「ROW_NUMBER」 ......類似的反應:http://stackoverflow.com/questions/1895110/row-number-in-mysql – xQbert 2014-09-29 18:50:37