Я хотел бы попросить вас о поддержке, как выбрать из базы данных. Моя база данных содержит записи следующей схемы.
Значение каждой строки: индексы 0 - 100 принадлежат aaaa, от 101 до 200 принадлежит bbbb и т. Д.
idx | string | ....
---------------------------------
100 | aaaa | ....
200 | bbbb | ....
300 | cccc | ....
Мало запросов для выбора:
- от 50 до 150, aaaa и bbbb для выбора
- от 150 до 220, bbbb и cccc для выбора
- из От 150 до 320, bbbb и cccc для выбора
- от 30 до 320, aaaa, bbbbb и cccc для выбора
Вот что я пришел с
SELECT idx, string, FROM table WHERE
idx >= (SELECT MAX(idx) FROM table WHERE idx <= 120) AND
idx <= (SELECT MIN(idx) FROM table WHERE idx >= 300)
ORDER BY idx ASC
К сожалению, этот запрос не работает с индексами вне диапазона, например 0 - 500 приведет к пустому набору.
EDIT : Другой пример, который ближе к реальному использованию следует
idx | string | ...
-----------------------
125 | aaaa |
1463 | bbbb |
5469 | cccc |
15896 | eeee |
589774 | ffff |