2012-02-24 84 views
0

可能重複:
mySQL 「Rank in Highscore」-QueryMySQL的高分查詢

我只是想知道是否有采集基於點的一些ID的當前等級的任何有效途徑。

我唯一的想法是抓住整點,然後檢查每個記錄是否或多或少。像這樣的東西。

Select * from whatever table 

$x=0 
while($row = mysql_fetch_array($result) { 
    if ($user == $row['user']) { 
      echo "$user is rank $x out of " . count($result); 
      break; 
    } 

    else { 
     $x++ 
    } 
} 
+0

什麼是您的數據庫表是什麼樣子? – 2012-02-24 07:43:44

+0

提供一些表格格式的數據作爲輸入和輸出... – 2012-02-24 07:48:08

+0

也檢查[this](http://stackoverflow.com/questions/8878354/ranking-joint-positions-in-mysql)。希望這可以幫助你! – 2012-02-24 07:48:51

回答

1

您可以使用一個變量,如圖所示here

SET @rank=0; 
SELECT user.*, @rank:[email protected]+1 AS 'rank' 
FROM user 
ORDER BY score DESC 
0

你的意思是像mysql中的「MAX」嗎?

「SELECT max(score)as record FROM users」;

這將從用戶表中檢索出得分最高的列。

0

這在MySQL中可完成:

SELECT ui2.*, 
     (
     SELECT COUNT(*) 
     FROM users ui 
     WHERE (ui.points, ui.id) >= (ui2.points, ui2.id) 
     ) AS rank 
FROM users ui2 
WHERE id = @id 
0

是的,你可以跟團一起使用MAX()由子句組基於特定標準的結果。

「SELECT max(score)as record users_points group by user_id,game_id」;

0
drop table if exists users; 
create table users 
(
id int unsigned not null auto_increment primary key, 
score int unsigned not null default 0 
) 
engine=innodb; 

insert into users (score) values (10),(30),(50),(30),(20),(45),(20); 

select 
@r:[email protected]+1 as rank, 
u.id, 
u.score 
from 
users u 
inner join (select @r:=0) as r 
order by 
u.score desc;