我想使用sqlite3在c接口中使用sqlite_prepare_v2()从数据库中获取条目,并用于按预期顺序获取输出。 想要以在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顺序给出输出。 id是主键字段。 sqlite是否在主键字段上使用任何默认索引来使这种情况发生?还是有办法从where子句中给出的sqlite获取输出?请告诉我。谢谢。
答案 0 :(得分:0)
in()
子句的顺序与select
结果的顺序无关。
为了以所需顺序获得select
结果,您必须添加一个满足您需要的显式order by
子句,例如第二种情况下的order by size
,或者您可以必须以所需顺序发出3个单独的select
语句。