我有以下MySQL的聲明帶回排名前10位的用戶數據加上數據的登錄用戶(如果登錄用戶是在排名前10位以後還有隻有10個結果總計,否則有11)...與排序結果
(SELECT user_id, points, amountLikes, amountComments
FROM all_scores_table
ORDER BY points desc, amountLikes desc, amountComments desc
LIMIT 0,10)
UNION
(SELECT user_id, points, amountLikes, amountComments
FROM all_scores_table
WHERE user_id = $session_user_id)
ORDER BY points desc, amountLikes desc, amountComments desc
all_scores_table每個用戶只有1行。我現在試圖將排名信息添加到第二個查詢中(例如,如果有11行,我想知道session_user_id是列表中的第11位還是第468位)。
我讀了一堆類似的帖子,但無法找到,似乎適用於我已經unioning分類結果書面我的初始查詢的方式回答 - 例如我不能只添加點數大於我的用戶的簡單行數,因爲如果他們甚至想引用amountLikes和amountComments來查找真實的順序。
我當然可以做到這一點在PHP與第二查詢,但我希望有人注意到一個優雅的方式,僅
感謝蒂姆,但我不明白這是如何返回等級信息 - 有沒有其他列,所以我怎麼會知道,如果用戶是第11或第468? – d3wannabe
@ d3wannabe我更新了我的答案。我建議堅持使用您的第一個十大查詢,在您的PHP代碼中分配排名,然後使用會話變量獲取當前登錄用戶的排名。 –