我需要從具有最大分數的表中獲得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)
一個子查詢是否有可能做只有一個查詢(無子查詢和無連接)?
我需要從具有最大分數的表中獲得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)
一個子查詢是否有可能做只有一個查詢(無子查詢和無連接)?
按行排序結果並獲得第一個結果。
SELEC name FROM table
ORDER BY points DESC
LIMIT 1
這不是問題的答案。結果在這個例子中應該是2行,但可以是任何整數 –
我想念的確是這樣的問題 – mb14
你幾乎在正確的軌道上。它需要某種子查詢。
請參閱here以瞭解MySQL手冊是如何實現的。
我真的不確定這是否可行。從表格中選擇最大點數,然後使用點數加入。它可能會在沒有子查詢的情況下顯示所需的名稱。但是,當然,子查詢是更好(也是更快)的答案。
SELECT max(t1.points) as maxpoints, t2.name FROM table t1
INNER JOIN table t2 on t2.points = maxpoints
編輯:等等,什麼?沒有加入?從什麼時候開始這部分任務?好的,我寫的解決方案已經過時了。好吧。
謝謝:)我們認爲這是不可能的,如果我們不使用連接subquerys – aaronroman
爲什麼沒有子查詢?爲什麼不加入?這是一個理論問題嗎? –
我想知道是否有可能,另一方面測試是否也是最有效的:) – aaronroman
如果你有'(points)'的索引,它儘可能高效。不,沒有子查詢或連接是不可能的。 –