2015-02-24 56 views
0

因此,我目前使用下面的SQL位來選擇給定變量的最接近的排名值,但我期望實現一個功能,以便我可以獲取最接近的排名值,但沒有比變量。選擇行<=值

這裏是我當前的SQL語句:

SELECT rank, points 
FROM `4star` 
WHERE arenaID = 6 
ORDER BY ABS(rank - $v) ASC 
LIMIT 1 

$v表示PHP變量。

如果這是我的表:

+---------+----------+ 
| rank | points | 
+---------+----------+ 
| 1  | 9  | 
| 50 | 7  | 
| 200 | 6  | 
| 5000 | 4  | 
| 10000 | 1  | 
+---------+----------+ 

我將如何選擇最接近的等級來3000那不是比3000更大?所以我會得到的行將是200 => 6

回答

2

我該如何選擇距離不超過 3000最近的排名?

使用WHERE選擇行,其中排名小於/等於3000,然後ORDER BY排名下降和LIMIT結果以一行:

SELECT rank 
FROM table 
WHERE rank <= 3000 AND arenaID = 6 
ORDER BY rank DESC 
LIMIT 1 
+0

好這很簡單...我的大腦總是試圖讓事情變得複雜。謝謝! – Spedwards 2015-02-24 13:32:27

2

試試這個:

SELECT rank,points 
FROM `4star` 
WHERE rank <=3000 
    AND arenaID = 6 
ORDER BY rank Desc 
LIMIT 1