2015-02-24 2 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, который был не больше 3000?

Использование WHERE для выбора строки, в которых ранг меньше/равно 3000, то ORDER BY ранга по убыванию и LIMIT результаты, чтобы один ряд:

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

Ну это было довольно просто ... Мой мозг всегда пытается усложнить ситуацию. Благодаря! – Spedwards

2

Попробуйте это:

SELECT rank,points 
FROM `4star` 
WHERE rank <=3000 
    AND arenaID = 6 
ORDER BY rank Desc 
LIMIT 1 
Смежные вопросы