关于mysql 从一张表查询出每个ID最新的记录的方式

问题描述:

在开发过程中经常遇到从某一操作记录表 中查出每一个用户的最新的一条记录。

解决方法:

1、首先按照时间降序 ,然后再按照ID分组

select * from 

( select * from  A  order by date desc)as a

group by a.id

这样查询结果并不会得到想要的结果,因为mysql 5.7之后的子查询里就默认不会使用排序,如果想要子查询使用排序,则可以加上limit限制条件

select * from 

( select * from  A  order by date desc limit 1000)as a

group by a.id

这样的操作是可以的,但是limit后面跟的数字应当大一点,如果数据比较多,就很尴尬 可能查不全

2、首先按照id分组,查询出最大日期值,然后进行外连接, 最后去重

SELECT DISTINCT *  from A   as a

INNER  JOIN 

(

        SELECT MAX(date_from) as date_from  A  GROUP  BY   ID

 )  as  b

on

a.date_from=b.date_from

GROUP BY

ID

注意,group by的查询字段 只能是聚合函数 或者主键  或者  group by 的对象,所以这么操作就可以查询出来

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值