ВЫБРАТЬ строки из базы данных SQLite, где выполняется условие с лимитом, возвращать строки с наименьшими идентификаторами - PullRequest
0 голосов
/ 29 октября 2018

У меня есть база данных со столбцом PRIMARY KEY INTEGER AUTOINCREMENT с именем id и столбцом флага условия, назовите его condition, который является INTEGER. Я хотел бы иметь возможность выбрать данное число строк N, где conditon=1. Это достаточно просто сделать запрос (например, если N=10):

SELECT data FROM table_name WHERE condition=1 LIMIT 10;

Однако я хотел бы гарантировать, что строки, которые я получаю, также являются строками с наименьшими значениями id из полного набора строк, где condition=1. Например, если строки с id от 1 до 20 имеют condition=1, я бы хотел, чтобы мой запрос гарантированно возвращал строки с id=1 - 10.

Насколько я понимаю, ORDER BY завершается после запроса, поэтому я не думаю, что включение ORDER BY id сделает это гарантией. Есть ли способ гарантировать это?

1 Ответ

0 голосов
/ 29 октября 2018

Ну, вы не правы:

SELECT data FROM table_name WHERE condition=1 ORDER BY id LIMIT 10;

это то, что вам нужно.
Он отсортирует нужные вам строки, а затем будет применен предел.
От http://www.sqlitetutorial.net/sqlite-limit/

SQLite LIMIT и предложение ORDER BY
Мы обычно используем предложение LIMIT с предложением ORDER BY, потому что мы заинтересованы в получении количества строк в указанном порядке, а не в неуказанный заказ.

Предложение ORDER BY появляется перед предложением LIMIT в SELECT. заявление.

SQLite сортирует результирующий набор до , получая число строки, указанные в предложении LIMIT.

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