MySQL中查询时间最大的一条记录

在项目中要查询用户最近登录的一条记录的 ip

直接写如下 SQL:

SELECT ip,MAX(act_time) FROM users_login GROUP BY login_id;

但是这样是取不出用户登录记录中时间最大的那个 ip , 仅仅只是查到了最大时间,和 ip 没关系

找了相当多的文章,经过自己测试,发现一个比较好的方式处理这个问题,举例如下:

现在假设有一张数据表 A , 字段和数据如下:

姓名(name) 身份证(唯一标识)(id) 购买产品(pro) 价格(price) 数量(count) 购买时间(time)
张1 111111 Computer 1600 5 2018-03-03
张1 11111 Phone 12     12   2018-03-05
张2 22222 Pipe 1 234 2018-03-04
张2 22222 Computer 1600 5 2018-03-05
张3 33333 Phone 12 12 2018-03-03
张3 33333 Pipe 1 234 2018-03-06
张3 33333 Computer 1600   5 2018-03-09
张4 44444 Phone 12 12 2018-03-09
张5 55555 Pipe 1 234 2018-03-02

在这张数据表中,我们需要查询表中每一个用户在最后一次都购买了什么产品以及相关信息

SQL语句如下:

SELECT * from (SELECT * FROM A ORDER BY time) a GROUP BY a.id;

解释:

在这里,我们首先对 A 表进行按照时间的顺序排序,这样我们可以把每个用户最后一次购买记

录排在最上面,排序之后再嵌套一层查询,这一层查询使用  GROUP BY 语句。在使用GROUP

BY 语句的时候,他会按照分组将你排过序的数据的第一条取出来,这样就比较符合条件了,这种

方式在添加索引的情况下效率相当快

(0)

相关推荐

  • 情人节前我来扒一扒:谁成就了微博段子手杜蕾斯?

    本篇来自编程教室学员 如果你一个微博控,一定领教过杜蕾斯官方微博的各种营销套路.那简直就是就是微博上的一股泥石流,让多少人一边大呼"太污了",一边手又很老实地点了转发. 作为互联网 ...

  • Mysql中查询某个数据库中所有表的字段信息

    前言有时候,需要在数据库中查询一些字段的具体信息,而这些字段又存在于不同的表中,那么我们如何来查询呢?在每一个数据库链接的information_schema数据库中,存在这样一张表--COLUMNS ...

  • MySQL中查询、删除重复记录的方法大全

    前言 本文主要给大家介绍了关于MySQL中查询.删除重复记录的方法,分享出来供大家参考学习,下面来看看详细的介绍: 查找所有重复标题的记录: 1 select title,count(*) as co ...

  • mysql分组取每组前几条记录

    作者:caicai1171523597 时间: 2021-02-05 10:05:39 标签:c# [摘要]项目中经常会遇到对数据进行分组排序并取前N条的需求,比如有一张资讯表如下 CREATE TA ...

  • 【面经】面试官:如何以最高的效率从MySQL中随机查询一条记录?

    写在前面 MySQL数据库在互联网行业使用的比较多,有些小伙伴可能会认为MySQL数据库比较小,存储不了很多的数据.其实,这些小伙伴是真的不了解MySQL.MySQL的小不是说使用MySQL存储的数据 ...

  • 长沙中创教育事件:成人高考成绩查询时间

    成人高考简介 成人高等学校招生全国统一考试,简称成人高考,是我国成人高等学校选拔合格的毕业生以进入更高层次学历教育的入学考试,属于国民教育系列教育,已经列入国家招生计划. 成人高考报名时间 考试时间由 ...

  • MySQL连接查询中索引的重要性

    在mysql中,我们要从多张表中读取数据时,往往需要用到连接查询.连接查询通过两张表中符合连接关系的字段来建立两张表的关联,通常包括内连接.左外连接.右外连接和全连接.内连接会保留两张表中共有的那部分 ...

  • mysql中json字段查询时间范围的方法

    在开发过程中经常会定义一些扩展字段,且需要增加查询,在以往的mysql版本中,json结构是不支持查询的,这样就导致我们不得不新定义字段.在mysql 5.7之后,为了解决这一问题,增加了相关的查询. ...

  • mysql中模糊查询的四种用法:

    一.%:表示任意0个或多个字符.可匹配任意类型和长度的字符,有些情况下若是中文,请使用两个百 分号(%%)表示. *注:like '%龙%':查询出所有含有"龙"的记录 1. 所查 ...

  • MySQL中常用到的关于时间的SQL

    -- 今天 SELECT DATE_FORMAT(NOW(),'%Y-%m-%d 00:00:00') AS dayStart; SELECT DATE_FORMAT(NOW(),'%Y-%m-%d ...