You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何获取trackproc表中最后两个日期的所有记录

解决方法

你的查询返回空是因为BETWEEN的参数顺序搞反了——BETWEEN要求左边的值小于等于右边的值,但你把更大的最后一个日期放在了左边,更小的倒数第二个日期放在右边,自然匹配不到任何数据。

不过更简单可靠的写法是用IN子句,直接匹配最后两个日期:

SELECT * FROM trackproc 
WHERE datum IN (
    SELECT datum FROM trackproc ORDER BY datum DESC LIMIT 2
)
ORDER BY datum;

如果一定要用BETWEEN,就把两个子查询的顺序调换过来,确保左边是较小的日期,右边是较大的日期:

SELECT * FROM trackproc 
WHERE datum BETWEEN (SELECT datum FROM trackproc ORDER BY datum DESC LIMIT 1,1) 
            AND     (SELECT datum FROM trackproc ORDER BY datum DESC LIMIT 1) 
ORDER BY datum;

另外要注意,如果表中存在多个相同的最大日期记录,LIMIT 2可能会拿到重复的日期,但这正好符合你要获取最后两个日期所有记录的需求——因为如果最大日期有多个记录,倒数第二个日期是次大的那个,IN子句会包含这两个日期的所有数据。

内容的提问来源于stack exchange,提问作者user9228488

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 02:30:58