【发布时间】:2015-02-26 07:36:33
【问题描述】:
我有两张桌子。一个“用户”和一个“投票”,每个用户可以有 n 票。现在我选择一个用户列表并输出它。 它适用于 LEFT JOIN 中的 COUNT 投票,但现在我想计算用户的 RANK(第 1、第 2、第 3、...)。
理论上,ORDER BY Votes 很容易,但我也允许我的用户按用户日期排序(当他们加入时)。而且我的查询中还有一个带有 LIMIT 的分页。那么如何才能最好地解决这个问题呢?
$user_sql = $db->query("SELECT u.*, COUNT(v.voteId) AS user_votes
FROM cs_users AS u
LEFT JOIN cs_users_votes AS v
ON u.userId = v.voteUserId");
(基本查询,但会添加分页和排序器 ORDER BY / LIMIT 等)
希望你能帮忙!
【问题讨论】:
-
我对“感到困惑,但我也允许我的用户按用户日期排序(当他们加入时)。”???
-
我的意思是,当我按用户日期排序时,我不能使用 MySQL 输出的顺序来获得排名,比如计算 $i++;每个用户,以获得排名。使用 LIMIT 时同样的问题
-
排名是根据票数吗?
-
你试过这个吗 SELECT u.*, COUNT(v.voteId) AS user_votes FROM cs_users AS u LEFT JOIN cs_users_votes AS v ON u.userId = v.voteUserId order by votes desc, date desc;
-
@habibulhaq 将如何显示排名?