2012-01-11 3 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

답변

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

이 경우 실패 넥타이의 ... –

+0

@ Arvind Bhardwaj : 그것은 넥타이의 경우 순위를 해결하려는 방법에 따라 다릅니다. 한 가지 경우에는 수용 가능할 수도 있고 다른 경우에는 틀릴 수도 있습니다. 따라서 업무 의존적이지만 절대적인 잘못된 해결책은 아닙니다. – zerkms

+0

그게 전부입니다. 우리는 동점의 경우에 작동하는 해결책이 있는가? –

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