举例
看数据 这里的业务场景是 用户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最大记录,可以在短时间查询出来!