mysql降序后去重_Mysql 数据记录去重后按字段排序

在MySQL中,为了获取历史记录中不重复的数据并按添加时间倒序排列,可以使用子查询配合GROUP BY和ORDER BY实现。具体操作为先通过ORDER BY对数据进行降序排列,然后在外部查询中使用GROUP BY去重,最后再次根据时间字段降序排序以确保获取的是每个数据ID的最新记录。
摘要由CSDN通过智能技术生成

实现效果:去重—取最新的—排序

例子 : 按用户ID获取历史记录中某个人的记录,要求非重复的且每条只获取最新的,同时按添加时间倒序排列的

实现 :SELECT *

FROM (

SELECT *

FROM historys

WHERE types_id=1

ORDER BY `created` DESC

) AS B

GROUP BY B.data_id

order by B.created DESC

之前在做一个视频的历史播放记录时遇到了去重后倒序排序的功能需求

1509862913_5433.png

1836954#

然后直接写了

SELECT H.*

FROM `historys` AS H

WHERE H.`users_id` = '259' AND H.`types_id` = 1

GROUP BY H.`data_id`

ORDER BY H.`id` ASC

本来以为没问题,结果后来检查时发现是有分组了(实现了去重),但没有把最新的历史记录排在前面

1836955#

1836955#

1836955#

1509862791_6782.png

如图,分组了,也倒序排序了,但是获取的记录并不是 data_id 的最新的那条

需要的真实顺序应该是24、23、29、30。。。

sql语句修改为SELECT A.*

FROM (

SELECT H.*

FROM `historys` AS H

WHERE H.`users_id` = '259' AND H.`types_id` = 1

ORDER BY H.`id` DESC

) AS A

GROUP BY A.data_id

ORDER BY A.id DESC

结果为

1509862927_8972.png

这才是正确的结果

本文由【waitig】发表在等英博客 本文固定链接:Mysql 数据记录去重后按字段排序 欢迎关注本站官方公众号,每日都有干货分享!

点赞 (0)赏分享 (0)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值