mysql获取最近一条数据_mysql显示所有数据库

mysql获取最近一条数据_mysql显示所有数据库关于mysql查询最近一条记录最近项目中遇到需要查询记录当前时间最近的一条记录的问题,开始感觉无从下手,后来逐步发现了三种解决方案。下策——查询出结果后将时间排序后取第一条select*fromawheretime<=”2017-03-2919:30:36″orderbytimedesclimit1这样做虽然可以取出当前时间最近的一条记录,但是一次查询需要将表遍历一遍,对于…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

关于mysql查询最近一条记录

最近项目中遇到需要查询记录当前时间最近的一条记录的问题,开始感觉无从下手,后来逐步发现了三种解决方案。

下策——查询出结果后将时间排序后取第一条

select * from a

where time<=”2017-03-29 19:30:36″

order by time desc

limit 1

这样做虽然可以取出当前时间最近的一条记录,但是一次查询需要将表遍历一遍,对于百万以上数据查询将比较费时;limit是先取出全部结果,然后取第一条,相当于查询中占用了不必要的时间和空间;还有如果需要批量取出最近一条记录,比方说:“一个订单表,有用户,订单时间,金额,需要一次性查询所有用户的最近的一条订单记录”,那么每个用户一次查询就要做一次整表的遍历,数据大的情况下,时间将会以指数形式增长,不能投入实际使用。

中策——查询排序后group by

select * from (

select * from a

where time<=”2017-03-29 19:30:36″

order by time desc

) group by user_id

后来发现使用group by 可以根据group by 的参数列分组,但返回的结果只有一条,仔细观察发现group by是将分组后的第一条记录返回。时间在查询后默认是顺序排列,因此需要先将时间倒序排列,方可取出距离当前最近一条。

这样查询实际上还是进行了两次查询,虽然时间上相比第一个方法有了质的飞跃,但是还可以进一步优化。

上策——将max() 方法和group by结合使用

select *,max(time) from a

where time<=”2017-03-29 19:30:36″

group by user_id

这句可以理解为将结果集根据user_id分组,每组取time最大一条记录。这样就很好的实现了批量查询最近记录,并且仅仅需要遍历一次表,即使在数据量巨大的情况下也可以在很短的时间查出结果。

from:https://www.cnblogs.com/wwyz/p/6641895.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/196192.html原文链接:https://javaforall.net

(1)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 数字电子技术课程设计八路抢答器报告_八路抢答器课程设计参考

    数字电子技术课程设计八路抢答器报告_八路抢答器课程设计参考数字电子技术课程设计-八路抢答器有错误请指正

    2022年10月20日
    1
  • Struts2拦截器详解

    Struts2拦截器详解成功的花儿,其间浸透了奋斗的泪水和汗水;然而,用泪水和汗水就可以实现一切的美好。Struts2拦截器概述拦截器的概念是在Struts2里面有的。在其它地方没有。Struts2是框架,封装了很多的功能,struts2里面封装的功能都是在拦截器里面。Struts2里面封装了很多的功能,有很多拦截器,不是每次这些拦截器都执行,每次执行默认的拦截器。Struts2里面默认的拦截器位置:struts

    2022年10月7日
    2
  • java基础-Java NIO使用及原理分析

    java基础-Java NIO使用及原理分析

    2022年2月24日
    70
  • 异常处理三原则_异常状态

    异常处理三原则_异常状态DRF框架的默认异常处理设置如下:默认使用模块下的函数进行异常处理自定义异常处理可以自定义异常处理函数,在DRF框架默认异常处理函数的基础上,添加一些其他的异常处理,比如数据库处理1)自定

    2022年8月6日
    3
  • 8种HOOK技术[通俗易懂]

    8种HOOK技术[通俗易懂]1.IAT_HOOKIAT是程序中存储导入函数地址的数据结构,如果HOOK了导入函数地址。就可以在函数调用的时候,将函数流程HOOK到我们指定的流程。但是我个人觉得这种方式最好要结合DLL注入的方式,如果单纯的使用HOOK,那么就需要将需要执行的操作的shellcode写入目标进程,如果操作复杂,可能需要的shellcode量特别大,所以我们需要借助DLL注入,这样就将我们需要执行的代码写入…

    2022年5月26日
    34
  • 卸载 x 雷某度!GitHub 标星 1.5w+,从此我只用这款全能高速下载工具!

    卸载 x 雷某度!GitHub 标星 1.5w+,从此我只用这款全能高速下载工具!作者|Rocky0429来源|Python空间大家好,我是Rocky0429,一个喜欢在网上收集各种资源的蒟蒻…网上资源眼花缭乱,下载的方式也同样千奇百怪,比如BT下载,磁力链接,网盘资源等等等等,下个资源可真不容易,不一样的方式要用不同的下载软件,因此某比较有名的x雷和某度网盘成了我经常使用的工具。作为一个没有钱的穷鬼,某度网盘几十kb的下载速度让我…

    2022年6月14日
    33

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号