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

如何按最新日期或ID从MySQL获取最新数据?修改查询取两年数据

问题1:如何根据最新日期或ID从MySQL中获取最新数据?

按ID获取(假设ID为自增主键)

如果表中ID是自增整数主键,最新数据通常对应最大ID值,两种常用写法:

  1. 排序取第一条:
SELECT * FROM your_table ORDER BY id DESC LIMIT 1;
  1. 用MAX()子查询匹配:
SELECT * FROM your_table WHERE id = (SELECT MAX(id) FROM your_table);

按日期字段获取

若表中有记录创建/更新的日期字段(如create_time、update_time),可通过以下方式获取最新数据:

  1. 排序取第一条:
SELECT * FROM your_table ORDER BY create_time DESC LIMIT 1;
  1. 用MAX()子查询匹配:
SELECT * FROM your_table WHERE create_time = (SELECT MAX(create_time) FROM your_table);

注意:若存在多条记录日期相同的情况,LIMIT 1仅返回其中一条;如需所有同最新日期的记录,去掉LIMIT 1即可。


问题2:修改现有查询获取过去两年的近期数据

原查询:

select stagingScriptDB.*, testBedSuiteMapping.template 
from stagingScriptDB 
inner join testBedSuiteMapping on testBedSuiteMapping.id = stagingScriptDB.idScriptDB 
limit 10;

修改后的查询(假设stagingScriptDB表存在时间字段create_time)

select stagingScriptDB.*, testBedSuiteMapping.template 
from stagingScriptDB 
inner join testBedSuiteMapping on testBedSuiteMapping.id = stagingScriptDB.idScriptDB 
where stagingScriptDB.create_time >= DATE_SUB(CURDATE(), INTERVAL 2 YEAR)
limit 10;

关键说明

  1. 日期过滤逻辑:DATE_SUB(CURDATE(), INTERVAL 2 YEAR)会计算当前日期往前推两年的日期,确保仅查询该时间段内的数据。
  2. 性能优化:因数据量庞大,需给stagingScriptDB.create_time字段添加索引,避免全表扫描:
CREATE INDEX idx_stagingScriptDB_create_time ON stagingScriptDB(create_time);
  1. 字段替换:若实际时间字段不是create_time,替换为表中对应的字段名即可(如update_time)。
  2. 获取最新排序数据:如需这两年内的最新数据,可在limit前添加排序:
order by stagingScriptDB.create_time DESC

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 23:45:36