sqlite查询基于从列字符串中进行选择,并按降序按最后一行进行筛选



我有一个数据库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

我试图从一个符号中按时间降序选择所有列和最后两行,例如AVAX/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

有人能指出我在这里做错了什么吗。

感谢

如果您查看错误消息,它会告诉您在ORDER BY附近有语法错误,它会在该子句之前提示一个错误。

正如您可以从文档中阅读到的:

字符串常量是通过将字符串用单引号('(括起来而形成的。

您应该像下面的一样,用单引号将LIKE参数括起来

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

相关内容

  • 没有找到相关文章

最新更新