SQLite выбирает диапазон номеров из последовательности без запуска - PullRequest
0 голосов
/ 02 апреля 2020

Я хотел бы попросить вас о поддержке, как выбрать из базы данных. Моя база данных содержит записи следующей схемы.

Значение каждой строки: индексы 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   |

1 Ответ

0 голосов
/ 02 апреля 2020

Предположим, что :start и :end являются параметрами, тогда вы можете сделать это:

SELECT idx, string  
FROM tablename 
WHERE idx BETWEEN :start AND (:end / 100 + (:end % 100 > 0)) * 100

См. Демоверсию .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...