我有一個資料庫,tick_df看起來像這樣
timestamp time symbol price
0 1649320867903 2022-04-07 08:41:07.903000 00:00 LUNA/USD:USD 108.3220
1 1649320867884 2022-04-07 08:41:07.884000 00:00 SOL/USD:USD 115.9125
2 1649320867321 2022-04-07 08:41:07.321000 00:00 LUNA/USD:USD 108.3220
3 1649320866243 2022-04-07 08:41:06.243000 00:00 LUNA/USD:USD 108.3300
4 1649320866225 2022-04-07 08:41:06.225000 00:00 AVAX/USD:USD 84.6590
5 1649320866144 2022-04-07 08:41:06.144000 00:00 AVAX/USD:USD 84.6640
我試圖從一個符號中按時間降序選擇所有列和最后 2 行 - egAVAX/USD:USD。我試過的查詢是
SELECT symbol FROM tick_df WHERE symbol LIKE AVAX% ORDER BY timestamp DESC LIMIT2
但這會回傳一個錯誤
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) near "ORDER": syntax error
誰能指出我在這里做錯了什么。
謝謝
uj5u.com熱心網友回復:
如果您查看錯誤訊息,它會告訴您在 附近存在語法錯誤ORDER BY,它會提示緊接該子句之前的錯誤。
正如您可以從檔案中看到的:
通過將字串括在單引號 (') 中形成字串常量。
您應該LIKE像這樣將 arg 括在單引號中
SELECT symbol FROM tick_df WHERE symbol LIKE 'AVAX%' ORDER BY timestamp DESC LIMIT 2
此外,如果你想回傳所有你應該回傳的列,SELECT *而不是SELECT symbol因為后者只會回傳符號列。
最終正確的查詢應該是
SELECT * FROM tick_df WHERE symbol LIKE 'AVAX%' ORDER BY timestamp DESC LIMIT 2
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/457440.html
標籤:Python sql sqlite sqlalchemy
