2010-03-24 78 views
0

請幫我寫一個SQL查詢 - 我有一個表id,namemarks列。SQL查詢獲取10行近值

如果我按照標記的升序排列表格,我如何獲取5個名稱與標記接近的名字。

+2

你是什麼意思接近一個特定的名字是什麼意思?你只想在這個列表中的前5個名字,或者你想要前五個分數的名字......?請更精確 – Nexum 2010-03-24 15:44:34

回答

2

像這樣的東西應該這樣做:

select id, name, marks 
from Marks 
where name <> 'User1' 
order by abs(marks - (select marks from Marks where name = 'User1')) 
limit 5 
+0

這是一個很好的解決方案。 – Kangkan 2010-03-24 15:49:41

+0

我誤解了訂單的方向,對不起。 – 2010-03-24 16:24:07

0

的Microsoft SQL Server

SELECT TOP 10 column FROM table 

PostgreSQL和MySQL

SELECT column FROM table 
LIMIT 10 

奧拉CLE

SELECT column FROM table 
WHERE ROWNUM >= 3 AND ROWNUM < 10 

DB2

SELECT column FROM table 
FETCH FIRST 10 ROWS 
+0

這個問題被明確標記爲MySQL,並錯過了相關的過濾標準... – 2010-03-24 15:50:03

+0

我注意到了標籤,但試圖提供信息,我粗體顯示了每個DB名稱。我沒有回答整個問題,只是他問他想要取5行的部分。順便說一句,你是Gizmodos小馬? – medopal 2010-03-24 16:00:25

0

事情是這樣的:

select * 
from marks m 
order by abs(m.mark - (select m2.mark from marks m2 where m2.name = "John Doe")) 
limit 5;