我想知道是用MySQL还是用服务器语言处理数据更快。我确信像ORDER这样的原生函数在MySQL中会更快,因为索引、缓存等,但实际上是计算排名(包括返回具有相同排名的多个条目的ties ):
示例SQL
SELECT TORCH_ID,
distance AS thisscore,
(SELECT COUNT(distinct(distance))+1 FROM torch_info WHERE distance > thisscore) AS rank
FROM torch_info ORDER BY rank
服务器
...as不是只做一个SELECT TOR
我有一个以用户排名为中心的网站,但用户数量已经超过5万,这给服务器带来了压力,每5分钟循环一遍所有用户的排名。有没有一种更好的方法,至少每隔5分钟就能轻松更新一次军衔?它不需要使用php,它可以是像perl脚本那样运行的东西,或者如果类似的东西能够更好地完成工作的话(虽然我不知道为什么会这样,只是在这里保留我的选项)。
这就是我目前为更新军衔所做的工作:
$get_users = mysql_query("SELECT id FROM users WHERE status = '1' ORDER BY month_score DESC");
$i=0;
whil
我正在为一个madden nfl联盟创建一个可排序的力量排行榜。如果你想看它,它在
当我试图计算上一次保存的排名的变化时,我遇到的问题是,用于获得最后排名的查询返回null,有时会导致更改错误,因为它认为旧排名是0,而不是0。下面是for循环的基本代码片段
foreach($order as $team)
{
$query="SELECT * FROM powerrankings WHERE team='$team'";
echo "query to select team:".$query."\n\n";
我无法正确显示我的联赛排名。我有一个CSV文件,所有的球队都按分区和会议划分(基本上是想显示我的排名,就像NHL的排名一样)
显示每个分区的前3支球队,然后显示会议中不在分区前3名的前2支球队。
下面是我现在拥有的代码
//Query Central //
$QueryCentral="SELECT * FROM QNHLProTeamV2 WHERE Division='$CentralDivision' ORDER by Points DESC, GP ASC, W DESC, GoalDiff DESC LIMIT 3";
$ResultCentral=m
我不是php的专业人士。我有一个简单的表格,如下所示:
game_id name score
我使用这个查询来获得mysql中一个玩家的排名:
SELECT FIND_IN_SET( score, ( SELECT GROUP_CONCAT( score ORDER BY score ASC ) FROM highscores ) ) AS 'rank' FROM highscores where game_id = $game_id
它可以在mysql中显示排名,但我无法在php代码中将排名作为参数获取。
我尝试过以下几种方法:
mysql_fetch_a
我的数据库里有足球运动员。他们每个人都有一个排名(1是最好的),我在MYSQL查询中实时计算他们的年龄。该查询通过使用他们的排名加上他们的年龄来进行排序。所以我首先有了这个..。
$rankquerytext="ranking + age";
那我就有疑问..。
$sql = "SELECT *, FLOOR(DATEDIFF(CURDATE(), born) / 365.25) AS age
FROM players
ORDER BY " . $rankquerytext . "";
这个很好用。不过,我想说得更具体一点,不只
我想找到一种方法来更新MySQL中的自定义排名字段,以便它将重新编号所有其他项目。 示例数据: ID Name Ranking
12 Sara 1
13 Mike 2
14 John 3
15 Susie 4
16 Melissa 5
17 Jane 6 如果,通过PHP,我将'Jane'更新为排名位置2,我希望从'Mike'到'Melissa'的每个人都被移动到位置3到6。 Set Ranking=2 where ID=17,并找到一种循环其余部分的方法
我有一个我想要排序的专栏,定期更新排名(每天)。我目前在代码中使用它
get all rows from table order by column
rank = 1
foreach row in table
update row's rank to rank
rank++
这需要对MySQL中的每一行进行更新。有没有更有效的方法来做到这一点?
我试图为音乐家创建一个排名系统,在我的mysql表中,我列出了如下所示:
id genre artist rating votes
1 rock pink floyd 138 25
2 rock black sabbath 149 28
3 pop katy perry 98 12
4 rock the who 72 14
用户可以在1-10的范围内给一个
我有一个用户配置文件表和一个提示表。tips表有一个外键,将用户ID链接到tip.receiver。我需要能够根据收到的提示对用户进行排名。据我所知,MySQL没有秩()函数。当选择多行时,可以很容易地替换,如所示
SELECT id,score,
@curRank := @curRank + 1 AS rank
FROM scores p, (SELECT @curRank := 0) r
ORDER BY score DESC;
然而,我想要能够显示的排名时,只选择一行。例如,当查看用户的配置文件页面时。我考虑过为此使用子查询,但是有更好的方法吗?
我只是在学习MySQL。我需要找出排名的交易一天。在这里,我为我的需求添加了相应的MYSQL查询,该查询按天对所有销售额从高到低进行排序。请帮我添加一个列,使交易的排名从最高到最低,并在第二天重置。
这是我当前正在处理的查询..
单日,标题,价格
SELECT
DATE(order_items.created_at) AS the_day,
order_items.deal_id,
SUM(order_items.item_total) AS daily_total,
SUM(order_items.qty) AS units_sold,
de
我有一个事件数据库。每个事件都有一个等级(1-5)。我想按日期范围查询数据库中的事件,我想选择一组排名为1的随机事件,然后选择一组排名为2的随机事件,依此类推。
这个查询给了我一个随机选择的排名1的事件:
SELECT * FROM
(
SELECT * FROM `events`
WHERE `date` >1326578956
AND `date`<1326870399
AND `rank`=1
ORDER BY RAND()
)
e LIMIT 0,10
但可能有这样的情况,即没有排名为1或排名2的事件。
是否可以只使用MYSQL查询。我可以使用PHP迭代查询,
我正在使用一个MySQL数据库来记录玩家在我创建的游戏中的高分。正在通过PHP文件"highscores.php“访问MySQL数据库。
高分都记录在数据库中,但我希望由PHP文件实现实际的排名数。我希望能够查询特定玩家的排名,而不是只查询他/她的高分。
我正在使用这个来获得我的球员的高分:
$username = $_GET["username"];
$checkID = mysql_query("SELECT * from Highscores WHERE Username =
'$username' ORDER BY Score DESC
我已经为用户权限和排名建立了一个页面,而不是每次我想要更改某人的排名或其他东西时都要处理phpmyadmin。现在,我在这个查询中遇到了一个问题,每次我运行时,所有用户都会得到相同的排名。
$sql = "SELECT * FROM users ORDER BY rank DESC LIMIT $start_from, 20";
$rs_result = mysql_query($sql) or die(mysql_error);
while ($row = mysql_fetch_assoc($rs_res
我有个问题。我正在根据申请者的考试成绩制定一个排名系统。以下是代码:
$testScore = "SELECT Overall_Score, First_Name
FROM applicant_details, person, person_details
where person.ID_No like person_details.ID_No and Position_Applied = 'Work137' and Person_Type = 'Applicant'
我想要一个代码来获得数据库行我有表->(网站)和两列->(url,排名)
排名应大于0
我运行以下代码:
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "mydb";
$conn = new mysqli($servername, $username, $password, $dbname);
$queryt = "SELECT url FROM site WHERE rank>0 ORDER By RA
好吧,很晚了,所以我想我只是累了,但是我已经尝试了大约一个小时,但是我找不到一个适合我的解决方案。基本上,代码查询数据库以找出游戏中有多少人,然后进行一些数学运算来比较人与人之间的分数。然后,它用玩家和他们的点数唯一的id填充一个数组。现在的问题是,我正在尝试将包含人员及其分数列表的数组与包含玩家将根据他们的排名而获得的分数的数组进行比较。我似乎找不到如何将这两个数组放在一起并相应地分配点。代码如下:
$game_id = 4; //will be replaced later on, just for testing
$x = 0;
$y = 0;
$point_array = array(
我写了一个愚蠢的小游戏,想要有某种领导委员会的网站。
通常排名只有10或20名顶级球员,但我认为如果我能记录下,每个球员的,他们的最高分,那就太好了。然后,我总是可以展示他们的世界排名。
一个简单的模式,如:
create table leaderboard (
userid varchar(128) not null,
score real not null,
when datetime not null
);
create index on leaderboard(userid);
会存储我需要的最小数量的信息-每个用户一个条目和他们最好的分数。
我的问题是如何有效
=做这件事最好的方法是什么?我要收回按分数排序的100项纪录,以获得高分。我还需要收回用户的排名,并指向下一个位置。
我现在是这样做的,但我不确定这是最好的方法
mysql_query("SELECT * FROM highScores ORDER BY score DESC");
我正在循环这些结果,以显示最高的分数。然后,为了获得用户的排名和下一个点,我将执行以下操作
$rank = mysql_num_rows(mysql_query("SELECT id, score FROM highScores WHERE score>='$userS
如果我只在数据库中显示用户的全局排名,我的代码就可以正常工作
function getUserRank($userId){
$sql1 = "SET @rownum := 0";
$sql2 = "SELECT rank, level FROM (
SELECT @rownum := @rownum + 1 AS rank, level, id
FROM accounts ORDER BY level DESC
我想找出一行的排名/行号。我不确定我是否解释得很好,所以我会试一试。
我有个问题
$sql = 'SELECT SUM(amount) AS total FROM sales ORDER BY total DESC';
$res = mysql_query($sql);
while($row = mysql_fetch_array($res)) {
// go through and print each row biggest 'total' first
echo $row['total'] . '<br />'