我有一个充满统计数据的数据库。
我知道如何通过做某些事情来获得具有特定统计数据的前10个帐户
SELECT money FROM accounts ORDER BY money DESC LIMIT 10
这将显示货币统计的前10个账户。如果我有10个不同的统计数据,是否有一种方法可以根据所有统计数据进行查询,从而计算出前十名玩家的位置?或者它会涉及很多查询,然后使用我选择的语言来显示它?
由于
答案 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