MySQL中查询时间最⼤的⼀条记录在项⽬中要查询⽤户最近登录的⼀条记录的 ip
直接写如下 SQL:
SELECT ip,MAX(act_time) FROM users_login GROUP BY login_id;
但是这样是取不出⽤户登录记录中时间最⼤的那个 ip , 仅仅只是查到了最⼤时间,和 ip 没关系
了相当多的⽂章,经过⾃⼰测试,发现⼀个⽐较好的⽅式处理这个问题,举例如下:
现在假设有⼀张数据表 A , 字段和数据如下:
姓名(name)⾝份证(唯⼀标识)(id)购买产品(pro)价格(price)数量(count)购买时间(time)
张1111111Computer160052018-03-03
张111111Phone12    12  2018-03-05
张222222Pipe12342018-03-04
张222222Computer160052018-03-05
张333333Phone12122018-03-03
张333333Pipe12342018-03-06
张333333Computer1600  52018-03-09
张444444Phone12122018-03-09
张555555Pipe12342018-03-02
mysql group by order by
在这张数据表中,我们需要查询表中每⼀个⽤户在最后⼀次都购买了什么产品以及相关信息
SQL语句如下:
SELECT * from (SELECT * FROM A ORDER BY time) a GROUP BY a.id;
解释:
在这⾥,我们⾸先对 A 表进⾏按照时间的顺序排序,这样我们可以把每个⽤户最后⼀次购买记
录排在最上⾯,排序之后再嵌套⼀层查询,这⼀层查询使⽤  GROUP BY 语句。在使⽤GROUP
BY 语句的时候,他会按照分组将你排过序的数据的第⼀条取出来,这样就⽐较符合条件了,这种
⽅式在添加索引的情况下效率相当快