Как составить несложный запрос?
Первый способ тоже годится, но фактически для непересекающихся множеств можно пользоваться только одной границей.

CREATE TABLE IF NOT EXISTS `test1` (
  `minVal` int(11) NOT NULL,
  `maxVal` int(11) NOT NULL,
  `price` int(11) NOT NULL AUTO_INCREMENT,
  PRIMARY KEY (`price`),
  UNIQUE KEY `froms` (`minVal`),
  UNIQUE KEY `fr2` (`minVal`,`maxVal`)
) ENGINE=MyISAM;


заполним ее значениями для 100к множеств с шагом 5 (0..4,5..9,… ,100000..100005)
EXPLAIN SELECT * 
FROM  `test1` 
WHERE minval <=42000
ORDER BY minval DESC 
LIMIT 1


id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE test1 range froms,fr2 fr2 4 NULL 9396 Using where

EXPLAIN SELECT * 
FROM  `test1` 
WHERE minval <=42000
AND maxval >=42000


id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE test1 ALL froms,fr2 NULL NULL NULL 20001 Using where

Имеющий глаза — да увидит.
select * from tbl where ЗНАЧЕНИЕ >2 and ЗНАЧЕНИЕ <=10
чуть поподробнее пожалуйста. По тексту не очень понятно, что именно вы хотите получить.