Mysql去重获取最新的一条数据
举例
看数据 这里的业务场景是 用户id为434 在公司id为 234中,存在多条入职离职记录,但实际场景中只想获取该用户最新的一条数据信息,该如何获取呢?
- 第一种解决方法 子查询分组排序
SELECT a.user_id, a.company_id, a.create_time FROM ( SELECT user_id,company_id,create_time FROM user_companys WHERE company_id = 234 AND user_id = 434 GROUP BY user_id, create_time ORDER BY create_time DESC ) a GROUP BY user_id;
得到的结果如下: 这种先是获取内部分组并且根据时间排序,最新的数据在最上一条,在分组获得第一条!
- 第二种解决方法 将max函数和group by结合使用 (不需要嵌套)
SELECT user_id, company_id, MAX( create_time ) as create_time FROM user_companys WHERE company_id = 234 AND user_id = 434 GROUP BY user_id
得到得结果如下 根据group by user_id分组,每组取create_time最大记录,可以在短时间查询出来!