2012-01-11 62 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'