android Sqlite3 相同sql 在命令行和數據庫管理工具查詢出的數據不一致

近日編寫android程序的sql相關,在sqlite管理工具裏編寫了查詢句,結果集對上了。(至於爲什麼不直接跑代碼,都懂的...)

執行的語句:
select tab1.dzbh, tab1.submit, tab1.totalNum, tab2.num from(
select *, count(dzbh) totalNum from rfid_contrast 
((state < 2) ? " where submit = "+state : "") group by dzbh) as tab1
left join 
(select dzbh, count(goods) num from rfid_contrast where updTime >= 0 
((state < 2) ? " and submit = "+state : "") group by dzbh) as tab2 
on tab1.dzbh = tab2.dzbh order by updTime desc limit 0,10;

先貼效果圖:

android 中自帶的sqlite命令行工具,如下:
android Sqlite3 相同sql 在命令行和數據庫管理工具查詢出的數據不一致

數據庫管理工具,執行的效果如下:
android Sqlite3 相同sql 在命令行和數據庫管理工具查詢出的數據不一致

再就是前不久自己下載的源碼,編譯的一個工具,執行效果如下:
android Sqlite3 相同sql 在命令行和數據庫管理工具查詢出的數據不一致

總結:

相信細心的朋友已經發現途中編輯1的祕密了,對。就是android系統默認的sqlite3版本過低,也算是一個sqlite的bug吧。

原因是數據庫引擎版本過低,group by 後不能進行 order by 升序;所以改寫了sql,多包幾層

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章