mysql通过timestamp获取最新记录而不使用子查询

 布景tamimi_498 发布于 2023-02-13 20:17

在这张表中我有四列

id   state_id   state        add_time
1       10         1        1385461144
2       12         3        1385461144
3       14         2        1385461144
4       12         5        1385461264
5       10         2        1385461264

我想通过最后一个字段获取最新记录(add_time)

结果必须是这样的

id   state_id   state        add_time
3       14         2        1385461144
4       12         5        1385461264
5       10         2        1385461264

我发现这个问题获取最新时间戳mysql的记录 ,它使用两个选择查询(子查询).但我不想使用子查询.

有没有其他方法来获取最新记录?

1 个回答
  • 有两种方法可以获得您正在寻找的结果.

    左连接解决方​​案:

    SELECT t1.* FROM t t1
    LEFT JOIN t t2
    ON t1.state_id = t2.state_id AND t1.add_time < t2.add_time
    WHERE t2.add_time IS NULL
    

    小提琴这里.

    子查询解决方案:

    SELECT t1.* FROM t t1
    JOIN (
      SELECT state_id, max(add_time) add_time FROM t
      GROUP BY state_id
    ) t2
    ON t1.state_id = t2.state_id AND t1.add_time = t2.add_time
    

    小提琴这里.

    两者都会输出:

    | ID | STATE_ID | STATE |   ADD_TIME |
    |----|----------|-------|------------|
    |  3 |       14 |     2 | 1385461144 |
    |  4 |       12 |     5 | 1385461264 |
    |  5 |       10 |     2 | 1385461264 |
    

    2023-02-13 20:21 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有