问题描述:
在开发过程中经常遇到从某一操作记录表 中查出每一个用户的最新的一条记录。
解决方法:
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 的对象,所以这么操作就可以查询出来
本文发布于:2024-02-04 19:39:36,感谢您对本站的认可!
本文链接:https://www.4u4v.net/it/170714968958905.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |