2017-02-16 13 views
0

Я уверен, что я просто с замораживанием мозга и это один балбес простым, но в SQLite, когда я выполнить следующий запрос он, кажется, заказав результаты:SQLite запрашивая с колонкой, кажется, сортировать результаты

SELECT col_Referncia FROM lookup_57c5f58b0c4543df97fe5929498aa2bf 

enter image description here

Когда я джокер на ту же таблицу, это не (я только показывать этот столбец снова, но есть и другие столбцы).

SELECT * FROM lookup_57c5f58b0c4543df97fe5929498aa2bf 

enter image description here

Путь пишется код, я должен указать столбец. Есть ли способ вернуть его не отсортированным образом (например, я вижу с подстановочным знаком)?

В таблице есть несколько столбцов и индексов. Я подозреваю, что это как-то связано с индексами?

ответ

2

Нет, это невозможно. Вы всегда должны указать, какой заказ вы хотите установить. Тем не менее, на первом изображении вы указали столбец, поэтому SQL по умолчанию выполнит его по порядку ASC по значениям столбцов, тогда как во втором изображении оно, вероятно, упорядочивается с помощью первичного ключа или значений первого столбца (вы не полностью показать схему таблицы, поэтому мы не можем знать), так как вы выбрали все столбцы.

В любом случае, вы никогда не должны полагаться на БД, чтобы заказать товары для вас.

Предположит, что ваш ПК является id вы можете просто сделать это:

SELECT col_Referncia FROM lookup_57c5f58b0c4543df97fe5929498aa2bf ORDER BY id ASC

Но всем это не гарантирует, что заказ будет всегда, как вы видите здесь.

Еще одно решение - обновить ваши значения col_Referncia.

Прямо сейчас ваши столбцы быть порядок, как это:

1 - xxxxxxx 
10 - xxxxxxx 
100 - xxxxxxx 
2 - xxxxxxx 

То, что я предлагаю вам сделать это, чтобы обновить свои записи, так что цифры ведущих 0 в, например:

000001 - xxxxxxx 
000002 - xxxxxxx 
000010 - xxxxxxx 
000100 - xxxxxxx 

Таким образом, порядок будет правильным.

+0

Это имеет большой смысл. Моя проблема в том, что эти данные фактически генерируются пользователем, и мы динамически генерируем таблицу и столбцы на основе данных, которые они предоставляют. Затем они хотят вернуть данные точно так же, как они были введены (они используют CSV-файл для указания данных) в таблицу БД. Столбцы не установлены и могут сильно различаться. Имеет ли это смысл? Другими словами, они хотят, чтобы любой запрос возвращал результаты в порядке вставки. Ugh –

+1

Решением для этого может быть добавить столбец 'created_at', который автоматически добавит текущую временную метку, и вы можете просто заказать ее. Посмотрите здесь http://stackoverflow.com/questions/200309/sqlite-database-default-time-value-now о том, как создать столбец временной метки. –

+0

Справа. Я думал, что смогу также использовать автоматическое увеличение числа при построении таблицы. К сожалению, тысячи этих уникальных таблиц там ... это будет работать в будущем, но для существующих таблиц (если данные не будут обновлены) останется некорректным. –