2015-02-24 49 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