2012-01-11 64 views
0

我有一个MySQL表和我需要得到随机行,并获得总视图MYSQL GET行秩

+--------+------------+---------+ 
| id  | name  |totalview| 
+--------+------------+---------+ 
| 1  | ex1  | 20 | 
| 2  | ex2  | 100 | 
| 3  | ex3  | 30 | 
| 4  | ex4  | 40 | 
+--------+------------+---------+ 

的秩例如:

SELECT * FROM `table` WHERE `id` = '$rand'; 

$rand可以是1或2等..

我需要的TotalView

感谢的

获得该行的秩
+0

可能重复[如何获得连续的等级?(http://stackoverflow.com/questions/5347565/how-to-get-a-row-rank) – ctacke 2012-01-11 15:48:28

回答

2
SELECT *, 
     (SELECT COUNT(*) FROM table t2 WHERE totalview > t1.totalview) + 1 cnt 
    FROM table t1 
WHERE id = '$rand'; 
+0

它失败的情况下,的关系... – 2013-05-03 06:09:09

+0

@Arvind Bhardwaj:这取决于你如何解决排名情况下的关系。在一种情况下可能是可以接受的,而在其他情况下可能是错误的。所以它依赖于任务,但不是绝对错误的解决方案。 – zerkms 2013-05-03 06:12:36

+0

那就对了。我们是否有解决方案可以解决关系? – 2013-05-03 06:21:03

0
SELECT SUM(ref.totalview < t.totalview) FROM t1 CROSS JOIN t1 ref WHERE t1.id = '$rand'