2010-12-08 22 views
3

我有一個USER表,那有userIdpoint字段。在運行時,我想知道什麼是特定用戶羣的點位。什麼是最好的方法來實現這一點:
1:查詢所有用戶到列表中。根據點對列表進行排序,並執行二進制搜索以查找該用戶的排名。這聽起來像一個壞主意。
2:是否可以通過創建數據庫查詢來完成這些任務?什麼是排名系統的好設計

我期望2000-5000用戶。

+1

我認爲你需要重新說明這一點。你如何定義你的系統中「排名」的含義? – 2010-12-08 19:04:31

+0

@Peter:我希望排名是用戶列表中的用戶條目的數量。 – Vlad 2010-12-08 19:11:25

回答

5
SET @rownum := 0; 

SELECT rank, userId, point 
FROM (
     SELECT @rownum := @rownum + 1 AS rank, userId, point 
     FROM user ORDER BY point DESC 
    ) 
as result WHERE userId = xxxxxxxx