2011-10-14 30 views
1

我需要從具有最大分數的表中獲得n用戶。mySQL - 從一個表中獲取最大分數的用戶

id name points 
1  pep  4 
2  roky 5 
3  jhon 2 
4  sant 5 

查詢結果將是'roky''桑特'

我用這樣的

SELECT name FROM table 
WHERE points = (SELECT MAX(points) FROM table) 

一個子查詢是否有可能做只有一個查詢(無子查詢和無連接)?

+0

爲什麼沒有子查詢?爲什麼不加入?這是一個理論問題嗎? –

+0

我想知道是否有可能,另一方面測試是否也是最有效的:) – aaronroman

+0

如果你有'(points)'的索引,它儘可能高效。不,沒有子查詢或連接是不可能的。 –

回答

-1

按行排序結果並獲得第一個結果。

SELEC name FROM table 
ORDER BY points DESC 
LIMIT 1 
+0

這不是問題的答案。結果在這個例子中應該是2行,但可以是任何整數 –

+0

我想念的確是這樣的問題 – mb14

1

你幾乎在正確的軌道上。它需要某種子查詢。

請參閱here以瞭解MySQL手冊是如何實現的。

0

我真的不確定這是否可行。從表格中選擇最大點數,然後使用點數加入。它可能會在沒有子查詢的情況下顯示所需的名稱。但是,當然,子查詢是更好(也是更快)的答案。

SELECT max(t1.points) as maxpoints, t2.name FROM table t1 
INNER JOIN table t2 on t2.points = maxpoints 

編輯:等等,什麼?沒有加入?從什麼時候開始這部分任務?好的,我寫的解決方案已經過時了。好吧。

+0

謝謝:)我們認爲這是不可能的,如果我們不使用連接subquerys – aaronroman

相關問題