Mysql存在多条数据,按时间取最新的那⼀组数据
1、数据如下,获取每个⽤户最近的⼀次登录数据
思路1:order by + group by
  先根据UserId+LogInTime排序,再利⽤Group分组,即可得到每个User_Id的最新数据。
SELECT * FROM login_db l ORDER BY l.user_id, l.login_time DESC;
  排序结果:
  再对结果进⾏分组:
SELECT * FROM (
SELECT *
FROM login_db l
ORDER BY l.user_id, l.login_time DESC
) lb
GROUP BY lb.user_id;
  得到的结果如下:
  从结果可知,这并不是我们预期的结果。因MySql版本的原因,对Group By进⾏了优化,导致前⾯的排序不再⽣效,⽽是保留了排序前的结果。
  为了使Group By根据我们排序后的结果进⾏分组,需要加⼊关键字Limit告诉MySql需要进⾏排序。
  修改之后的语句如下:
SELECT * FROM (
SELECT *
材质肌理伦勃朗自画像FROM login_db l
ORDER BY l.user_id, l.login_time DESC LIMIT100000
) lb
GROUP BY lb.user_id;
 得到了预期的结果:
  从SQL中,不难看出,这个⽅法存在⼀个缺陷,就是必须要保证原始数据在limit范围内,否则分组的结果就不会是全部的数据,结果⾃然也是不能保证的。
思路2:多表关联
分布式开发是什么意思
  利⽤多表关联,同⼀纬度(User_Id)下的登录时间进⾏⽐较,得出最近的时间。达内软件培训学校
select b1.*
from login_db b1
算数运算符有哪些
where (select COUNT(1)
from login_db b2mysql语句顺序
where b2.user_id= b1.user_id and b1.login_time <= b2.login_time) <=1;
>access denied you need at

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。