簡體   English   中英

Python:奇怪的SQLite3查詢結果

[英]Python: strange SQLite3 query result

我在Python3中使用SQLite3查詢得到了意外的結果。

if first_waypoint_number < last_waypoint_number:
        result = list(c.execute("SELECT WPNumber, WPID, ROUTE FROM rte WHERE ROUTE = ? AND WPNumber BETWEEN ? AND ?", (route, first_waypoint_number, last_waypoint_number)))
        print(result)
else:
        result = list(c.execute("SELECT WPNumber, WPID, ROUTE FROM rte WHERE ROUTE = ? AND WPNumber BETWEEN ? AND ? ORDER BY WPNumber DESC", (route, first_waypoint_number, last_waypoint_number)))
        print(result)

第一個查詢按預期方式工作,並產生以下結果:

[('A123', 25, 'WAYPOINTX'), ('A123', 26, 'WAYPONTY'), ('A123', 27, 'WAYPOINTZ')]

但是,第二個查詢會產生一個空列表[] ,而它應該以相反的順序返回相同的列表。

我已經在SQLite3中測試了兩個查詢,都沒有問題。

我在這里想念什么嗎?

sqlite BETWEEN運算符等效於x>=y AND x<=z ,因此當y > z時不匹配任何內容。

sqlite> create table foo (x int);
sqlite> insert into foo values (1);
sqlite> insert into foo values (2);
sqlite> insert into foo values (3);
sqlite> insert into foo values (4);
sqlite> select * from foo;
1
2
3
4
sqlite> select * from foo where x between 2 and 3;
2
3
sqlite> select * from foo where x between 3 and 2;
sqlite> 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM