选择行< = value

时间:2015-02-24 13:28:42

标签: mysql sql sorting

所以我现在正在使用以下的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 个答案:

答案 0 :(得分:2)

  

我如何选择最接近3000的等级不大于   3000?

使用WHERE选择排名小于/等于3000的行,然后ORDER BY排名降低,LIMIT结果排成一行:

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

答案 1 :(得分:2)

试试这个:

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