mysql分组取最新一条记录(在搜索中需统计满足条件数量)

场景:一对多的两张数据表,分别为A和B,A、B表通过A表的主键进行关联,也就是B表中海油多列的包含有A表ID的数据。

A表-用户表

id username
1 jack
2 mark

B表-用户资产表

id uid property create_time
1 1 computer 2018-11-11
2 1 phone 2018-11-12
3 2 computer 2018-13-11
3 2 bike 2018-14-11
  • 对B表的数据进行分组

select * from B group by 'uid'
这时候每个分组获取的是随机排序的分组数据中的第一行

-对B表的数据进行分组,并获取分组数据中最新的一行数据

select * from ( select * from B order by create_time desc LIMIT 0,1000000000000000 ) sl group by create_time
先对B表数据进行排序,则取出的分组数据即为B表中create_time最新的那一行数据,其中经过实践,需要加上limit,否则没效果,估计和mysql版本有关。

补充:
这时候,假如有一个接口,进行分页查询满足一定资产且是这个用户当前最新资产(如有PC)的用户列表(需要返回满足条件的中数据条数),这时候就需要知道要在A表关联查询用户的资产,可以使用join关联B表,并只要查询最新创建时间(create_time)是的资产,就可以使用上面的方法,使用内联,关联B表,判断满足条件的总数据数。

SELECT * FROM `A` `s` INNER JOIN ( SELECT * FROM ( SELECT * FROM `B` ORDER BY `create_time` DESC LIMIT 0,1000000000000000 )sl GROUP BY `uid` ) `sl` ON `sl`.`uid`=`s`.`id` AND `sl`.`property` IN ('computer','bike') LIMIT 0,4

你可能感兴趣的:(mysql分组取最新一条记录(在搜索中需统计满足条件数量))