2013-05-31 56 views
1

我的情況爲了記錄選擇從MySQL表日期是這樣的: 我有2 MySQL表:用戶分數如何通過另一臺

用戶就是這樣的:id,name。 表得分就是這樣的:id,point,user_id;

我想要取得高分的10個用戶的名字,但我不知道我要用什麼樣的查詢。有人可以幫助我嗎?

回答

2

您可能需要使用一個INNER JOIN查詢並獲得您需要通過points列降序排列,並限制結果,以10

SELECT * 
FROM user a 
LEFT JOIN scores b 
ON a.id = b.user_id 
ORDER BY b.point DESC 
LIMIT 10 
4

的simpliest答案就是使用ORDER BYLIMIT所有相關的數據,但它不對於具有相同點的重複用戶不適用。

SELECT a.*, b.* 
FROM user a 
     INNER JOIN scores b 
      ON a.id = b.user_ID 
ORDER BY b.point DESC 
LIMIT 10 

處理重複的點,你可以有一個包含了前N得分的子查詢。

SELECT a.*, b.* 
FROM user a 
     INNER JOIN scores b 
      ON a.id = b.user_ID 
     INNER JOIN 
     (
      SELECT point 
      FROM scores 
      GROUP BY point 
      ORDER BY point DESC 
      LIMIT 10 
     ) c ON b.point = c.point 
ORDER BY b.point DESC 
-1

使用此: -

SELECT * 
FROM user as u,scores as s Where u.id = s.user_id 
ORDER BY s.point DESC 
LIMIT 10 
+0

爲什麼downvoted? –