建立奖励大厅的mysql查询?

时间:2012-01-03 08:12:09

标签: mysql

我有一个充满统计数据的数据库。

我知道如何通过做某些事情来获得具有特定统计数据的前10个帐户

SELECT money FROM accounts ORDER BY money DESC LIMIT 10

这将显示货币统计的前10个账户。如果我有10个不同的统计数据,是否有一种方法可以根据所有统计数据进行查询,从而计算出前十名玩家的位置?或者它会涉及很多查询,然后使用我选择的语言来显示它?

由于

2 个答案:

答案 0 :(得分:1)

您必须提出一个对其进行排序的订单,您可以为查询添加多种排序,但它可能无法提供您想要的结果

SELECT money FROM accounts ORDER BY money DESC, points DESC LIMIT 10

然而,你可以提出一些评分系统,但这意味着很多查询。至少,根据统计数据,它将是一个,类似于你已经写过的那个。像这样:

$result = mysql_query('SELECT money, account_id FROM accounts ORDER BY money DESC LIMIT 100');

$accounts = array();
$points = mysql_num_rows($accounts);
while ($row = mysql_fetch_assoc($result)){
    $accounts[$row['account_id']] += $points;
    $points--;
}

对每种分数类型重复此操作。之后,根据点对数组进行排序,您就会知道最高列表。

答案 1 :(得分:1)

您可以按一个或多个字段进行排序。您还可以使用计算字段。

SELECT money FROM accounts ORDER BY money, balance, age, SUM(money + balance) DESC LIMIT 10