我有以下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代码中分配排名,然后使用会话变量获取当前登录用户的排名。 –