回答

收藏

SQLite中WHERE子句中的聚合函数

技术问答 技术问答 344 人阅读 | 0 人回复 | 2023-09-14

简而言之,我有一个表格,包括一个用于时间戳的列。我想得到最新的(即最大价值)时间戳。我现在正在这样做:
3 I* g; I& Y* ~( TSELECT * FROM table ORDER BY timestamp DESC LIMIT 1但我宁愿这样做:
! u3 }/ c. O$ g8 B. c- x' `SELECT * FROM table WHERE timestamp=max(timestamp)但是,SQLite拒绝此查询:+ ]6 b2 Y, i( b9 x% K# v
SQL error: misuse of aggregate function max()该文件证实了该行为(页面底部):
2 N! I1 ?# c+ L聚合函数只能在SELECT使用语句。
) ?0 K1 R  I* l) `: d# r# ~
我的问题是:是否可以在没有最大时间戳的情况下编写查询以获得线路?select排序并将返回行数限制为1?这似乎是可能的,但我想我SQL-) e* g, Q: J- N0 @1 \
fu并没有sn花一现。
/ e8 Z5 ^, K4 d/ s- _6 v                                                               
% {) s4 y  |2 E0 Y* ^" w- g* S    解决方案:                                                               
+ A2 u1 t; S6 X6 M0 M& L                                                                SELECT * from foo where timestamp = (select max(timestamp) from foo)或者,如果SQLite坚持将子选择视为集合,) R- b) R, B8 ]
SELECT * from foo where timestamp in (select max(timestamp) from foo)
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则