如何通过投票mysql选择字段位置?

时间:2011-07-09 23:49:31

标签: mysql

我有一个名为servers的数据库表,其中包含三列'id','name'和'votes'。

如何通过投票选择列ID 5的位置?

例如,我想在我的比赛中通过投票来检查位置是服务器3吗?

2 个答案:

答案 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从零开始。


好吧,我误会了。现在。假设您的服务器有27票。

SELECT COUNT(*) FROM servers WHERE votes < 27;

您的服务器等级将为1加上结果;关系是可能的(即排名将分别为1,2,3,3,3,6,7,7,9等)。