基于从列字符串中选择并按降序过滤最后一行的sqlite查询
sqlite query based on selecting from column string and filtering by last rows in descending order
我有一个数据库,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
我正在尝试 select 所有列和最后 2 行仅从一个交易品种按时间降序排列 - 例如 AVAX/USD:USD。我试过的查询是
SELECT symbol FROM tick_df WHERE symbol LIKE AVAX% ORDER BY timestamp DESC LIMIT2
但这return一个错误
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) near "ORDER": syntax error
任何人都可以指出我在这里做错了什么。
谢谢
如果您查看错误消息,它会告诉您 ORDER BY
附近存在语法错误,它会提示紧接在该子句之前的错误。
您可以从 the documentation 中读到:
A string constant is formed by enclosing the string in single quotes (').
您应该像这样用单引号将 LIKE
arg 括起来
SELECT symbol FROM tick_df WHERE symbol LIKE 'AVAX%' ORDER BY timestamp DESC LIMIT 2
另外,如果你想 return 所有的列你应该 SELECT *
而不是 SELECT symbol
因为后者只会 return 符号列。
最终正确的查询应该是
SELECT * FROM tick_df WHERE symbol LIKE 'AVAX%' ORDER BY timestamp DESC LIMIT 2
我有一个数据库,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
我正在尝试 select 所有列和最后 2 行仅从一个交易品种按时间降序排列 - 例如 AVAX/USD:USD。我试过的查询是
SELECT symbol FROM tick_df WHERE symbol LIKE AVAX% ORDER BY timestamp DESC LIMIT2
但这return一个错误
sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) near "ORDER": syntax error
任何人都可以指出我在这里做错了什么。
谢谢
如果您查看错误消息,它会告诉您 ORDER BY
附近存在语法错误,它会提示紧接在该子句之前的错误。
您可以从 the documentation 中读到:
A string constant is formed by enclosing the string in single quotes (').
您应该像这样用单引号将 LIKE
arg 括起来
SELECT symbol FROM tick_df WHERE symbol LIKE 'AVAX%' ORDER BY timestamp DESC LIMIT 2
另外,如果你想 return 所有的列你应该 SELECT *
而不是 SELECT symbol
因为后者只会 return 符号列。
最终正确的查询应该是
SELECT * FROM tick_df WHERE symbol LIKE 'AVAX%' ORDER BY timestamp DESC LIMIT 2