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