Sqlite дает тот же вывод и не учитывает, где порядок пунктов - PullRequest
1 голос
/ 12 марта 2019

Я хочу получить запись из базы данных, используя sqlite3, используя sqlite_prepare_v2 () в интерфейсе c, и используется для вывода результата не в ожидаемом порядке. хотите получить запись в точном порядке, в котором указан размер в предложении where, но поведение выглядит следующим образом:

sqlite> select id,size from audio where size in (9,16,8);
3|9
4|8
5|16

sqlite> 
sqlite> select id,size from audio where size in (8,9,16);
3|9
4|8
5|16

sqlite> 
sqlite> select id,size from audio where size in (16,8,9);
3|9
4|8
5|16

Для первого запроса, я ожидаю, что выходной результат будет в другом порядке размера внутри предложения where, но кажется, что sqlite по умолчанию всегда дает выходные данные в порядке идентификатора. здесь id - поле первичного ключа. Использует ли sqlite индексирование по умолчанию для поля первичного ключа, чтобы это произошло? или есть способ получить выходные данные из sqlite, как это указано в предложении where? Пожалуйста, дайте мне знать. Спасибо.

1 Ответ

0 голосов
/ 12 марта 2019

Порядок предложения in() не имеет отношения к порядку результатов select.

Чтобы получить результаты select в нужном порядке, вы должны либо добавить явное предложение order by, которое соответствует вашим потребностям, например order by size во втором случае, либо вы должны ввести 3 отдельных select выписки в нужном порядке.

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