SQLite SELECT col WHERE col = 0; изменяет результаты - PullRequest
1 голос
/ 08 июня 2011

Как это могло произойти?

sqlite> select read, text from message;
1|No just got off the train
1|yadayada
1|Beautiful
1|<3
1|DONE <3
0|Hey

sqlite> select read, text from message where read=0;
0|
0|Ooo very cool
0|Donors choose?
0|No prize for the computer reading program / model/master class
0|Hey

Я усекаю очень длинные результаты каждого SQL-запроса. Это последние несколько результатов от каждого. Насколько мне известно, существует только одна запись со столбцом read = 0, но когда я добавляю предложение where, внезапно все записи возвращаются с этим значением. Чтобы еще больше запутать, результаты бывают разные или, по крайней мере, в другом порядке, выходной сигнал слишком длинный, чтобы я был уверен.

Большое спасибо за ваше время и помощь.

1 Ответ

1 голос
/ 08 июня 2011

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

Предоставленное усечение из вашего первого запроса, скорее всего, является последними 6 записями в этой таблице.Предоставленное усечение из вашего второго запроса, скорее всего, является последними 6 записями в этой таблице, ГДЕ читается = 0.

В итоге, только потому, что вы видите только 1 запись, где чтение = 0 в 6 строках, которые вы предоставили из вашегоПервый запрос не означает, что есть только 1. Это просто означает, что было только 1 в последних 6 строках.Если вы хотите сначала увидеть все строки «read = 1», а затем - все строки «read = 0», попробуйте добавить предложение «order by».

sqlite> select read, text from message order by read, text;

sqlite> select read, text from message where read=0 order by text;
...