Php MYSQL获得行排名

Php MYSQL获得行排名,php,mysql,sql,Php,Mysql,Sql,我有一个mysql表,我需要获得随机行,并获得总视图的排名 +--------+------------+---------+ | id | name |totalview| +--------+------------+---------+ | 1 | ex1 | 20 | | 2 | ex2 | 100 | | 3 | ex3 | 30 | | 4 | ex4

我有一个mysql表,我需要获得随机行,并获得总视图的排名

+--------+------------+---------+
| 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获得此行的排名

thank's

从t1交叉连接t1 ref中选择SUM(ref.totalviewSELECT *,
       (SELECT COUNT(*) FROM table t2 WHERE totalview > t1.totalview ) + 1 cnt
  FROM table t1
 WHERE id = '$rand'; 

@Arvind Bhardwaj的可能重复项:这取决于在出现关系时您希望如何解析排名。在某些情况下,这可能是可以接受的,而在其他情况下,这可能是错误的。所以这是任务相关的,但不是绝对错误的解决方案。我们有没有一个解决方案可以在打领带的情况下起作用?@Arvind Bhardwaj:它在打领带的情况下起作用。没有单一的方法来计算ties案例的排名,这取决于任务。如果它不适用于您的案例-您需要解释您的特定案例(在单独的问题中)
SELECT SUM(ref.totalview < t.totalview) FROM t1 CROSS JOIN t1 ref WHERE t1.id = '$rand'