SQLite SELECT col WHERE col = 0;改变结果

时间:2011-06-08 03:33:17

标签: sql select sqlite where-clause

怎么会发生这种情况?

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 个答案:

答案 0 :(得分:1)

您没有在任何一个SQL语句中提供“order by”子句,因此结果将按默认顺序返回给您 - 这可能是由他们的主键(如果存在)或按顺序返回的插入表格。

从第一个查询中提供的截断很可能是该表中的最后6条记录。从第二个查询中提供的截断很可能是该表中WHERE read = 0的最后6条记录。

总之,只是因为你在第一个查询提供的6行中只看到1个记录,其中read = 0并不意味着只有1.它只是意味着在最后6行中只有1个。如果你想首先看到所有“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;