我有一个名为servers的数据库表,其中包含三列'id','name'和'votes'。
如何通过投票选择列ID 5的位置?
例如,我想在我的比赛中通过投票来检查位置是服务器3吗?
答案 0 :(得分:2)
如果我正确地解释了你的问题,你就会问如何在按投票排序的服务器列表中找到id为5的行的等级。有一个复杂的解决方案,需要排序,但可以在O(log(n))空间和O(n)时间内完成的更简单的解决方案是简单地测量id = 5的投票数
select votes from servers where id = 5;
然后遍历数据库并为每个遇到投票数较少的服务器添加一个。或者,您可以执行以下操作:
select count(*) from servers where votes <= %votes
当您可以简单地遍历整个列表并收集所需的所有信息时,对此进行排序(O(nlog(n)时间)是过分的。
答案 1 :(得分:1)
使用LIMIT
:
SELECT id, name, votes FROM servers ORDER BY votes DESC LIMIT 2,1;
LIMIT a, b
表示“从行a开始给我b行”,a
从零开始。
SELECT COUNT(*) FROM servers WHERE votes < 27;
您的服务器等级将为1加上结果;关系是可能的(即排名将分别为1,2,3,3,3,6,7,7,9等)。