如何编写SQL查询特定月份内存在最后一条事件记录的ID
SQL查询实现方案
实现思路
- 先按ID分组,统计每个ID对应的最新(最大)录入日期
- 过滤出最新日期落在2020年1月整月范围内的ID及对应最新日期即可
注意:示例中日期格式为DD/MM/YYYY,需要先转换为标准日期类型再做比较,避免字符串匹配错误
MySQL环境参考代码
SELECT ID, DATE_FORMAT(MAX(STR_TO_DATE(DATE, '%d/%m/%Y')), '%d/%m/%Y') AS DATE FROM 你的表名 GROUP BY ID HAVING MAX(STR_TO_DATE(DATE, '%d/%m/%Y')) >= '2020-01-01' AND MAX(STR_TO_DATE(DATE, '%d/%m/%Y')) <= '2020-01-31';
代码说明
STR_TO_DATE(DATE, '%d/%m/%Y')把DD/MM/YYYY格式的字符串转换为MySQL可识别的日期类型MAX()函数取每个ID分组下的最大日期,也就是最后一次录入的日期HAVING子句对分组后的结果做过滤,只保留最新日期在2020年1月范围内的分组- 外层
DATE_FORMAT把日期转回原格式,和预期输出的格式保持一致
运行上述代码即可得到对应的预期输出结果。
内容的提问来源于stack exchange,提问作者Nithya Babu
相关产品推荐
相关产品推荐

