ブラウザで返ってくる結果と、DB browser for SQLiteで返ってくる結果が異なります。
jsからajaxでpythonを実行しています。
SQLはプログラムで生成しており、DB browser for SQLiteでは生成されたものをそのまま使用しています。
python
1 #!/usr/bin/python3 2 # -*- coding: utf-8 -*- 3 import sqlite3 4 5 connection = sqlite3.connect("DBパス") 6 cursor = connection.cursor() 7 res = cursor.execute(SQL)
SQL
1"SELECT * FROM 2 ( SELECT * FROM test 3 WHERE doc_id IN ('0001' , '0002' ) 4 ORDER BY doc_id asc ) 5group by doc_id 6order by CASE country WHEN 'JP' then 1 when 'US' then 2 else 3 END 7 8```testテーブル 9|country|doc_id|| 10|:--|:--:|--:| 11|JP|0001|| 12|US|0001|| 13|JP|0003|| 14|US|0002|| 15|CN|0001|| 16|JP|0003|| 17|CN|0002|| 18 19想定される結果(DB browser for SQLite) 20|country|doc_id|| 21|:--|:--:|--:| 22|JP|0001|| 23|US|0002|| 24 25異なる結果(ブラウザ) 26|country|doc_id|| 27|:--|:--:|--:| 28|CN|0001|←| 29|US|0002|| 30 31order by が効いていないみたいですが、手づまりなため知恵をお貸しください。 32 33 34### 追記 35 36下記SQLで実行したところDB browser for SQLiteでは正常に結果が返ってきました。 37しかし、python側では「Premature end of script headers:」が返ってきました。 38SQLが正しくないようです。(まったく同じSQLを使用しています) 39バージョンとかの問題なのでしょうか。 40 41```SQL 42SELECT * FROM 43 ( SELECT *,rank() over( partition by doc_id order by doc_id asc ,CASE country WHEN 'JP' then 1 when 'US' then 2 else 3 END) FROM test 44 WHERE doc_id IN ('0001' , '0002' ) 45 ORDER BY doc_id asc ) 46 WHERE rank = 1 47
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/31 02:42
2020/07/31 03:05
2020/07/31 04:09
2020/07/31 04:22