aLx_od
Новичок
Выбрать строку со значением MIN (Столбец1-Столбец2)
Здравствуйте.
Задана таблица tablename:
+--------+--------+
| begin | end |
+--------+--------+
| 15 | 21 |
| 10 | 22 |
| 8 | 17 |
| 1 | 10 |
| 3 | 5 |
+--------+--------+
Нужно выбрать ОДНУ строку, которая соответствует условию:
begin =< мое_число =< end и минимум(end - begin).
Т.е. если мое_число = 16, то результат: 1-я строка.
Подскажите, плз., как это сделать на языке MySQL?
select * from tablename where 15 between tablename.begin and tablename.end
НЕ ПОДХОДИТ, т.к. выбирает 1, 2 и 3 строки. А мне нужно первую строку, где значение end минус begin МИНИМАЛЬНО, т.е. MIN(end-begin).
нужно что-то вроде
select @minVal:=min(end-begin) from tablename where 15 between tablename.begin and tablename.end
select * from tablename where 15 between tablename.begin and tablename.end and (end-begin)=@minVal
но как-то громоздко получается... (
Здравствуйте.
Задана таблица tablename:
+--------+--------+
| begin | end |
+--------+--------+
| 15 | 21 |
| 10 | 22 |
| 8 | 17 |
| 1 | 10 |
| 3 | 5 |
+--------+--------+
Нужно выбрать ОДНУ строку, которая соответствует условию:
begin =< мое_число =< end и минимум(end - begin).
Т.е. если мое_число = 16, то результат: 1-я строка.
Подскажите, плз., как это сделать на языке MySQL?
select * from tablename where 15 between tablename.begin and tablename.end
НЕ ПОДХОДИТ, т.к. выбирает 1, 2 и 3 строки. А мне нужно первую строку, где значение end минус begin МИНИМАЛЬНО, т.е. MIN(end-begin).
нужно что-то вроде
select @minVal:=min(end-begin) from tablename where 15 between tablename.begin and tablename.end
select * from tablename where 15 between tablename.begin and tablename.end and (end-begin)=@minVal
но как-то громоздко получается... (