mysql根据某一字段获取最新一条数据的几种实现

更新时间:2023-05-14 13:53:20 阅读: 评论:0

mysql根据某⼀字段获取最新⼀条数据的⼏种实现
又一个新的开始
在实际业务中,我们经常会遇到如何从同⼀个字段相同值中获取最新⼀条数据的问题。经⾃⾝积累以及百度之后,将常⽤的⽅法记录下来。
具体事例
由于使⽤的表的数据较多,所以只展⽰了部分数据陈晓前女友
group by的⽅式
第⼀种
SELECT
气态氢化物国货护肤品order_id,
max( product_price )AS product_price
抗日英雄王二小
FROM
oms_order_item
好的故事教案
GROUP BY
order_id
得到的结果
注意:
SELECT
id,
order_id,
max( product_price )AS product_price
FROM
苹果查真伪oms_order_item
GROUP BY
order_id
如上述SQL,若想获取其他字段的数据,⽽直接在SQL语句上增加该字段的话,查询到的结果是不⼀致的(product_price 最⼤的那条数据对应的id应该是25,⽽查询出来的id是21(默认显⽰分组后的第⼀条数据的值)),需注意。由于能⼒有限,具体原因并不知道。若有⼤佬知道,希望能给出答案。
第⼆种
SELECT
a.id,
a.product_price
FROM
(SELECT*FROM oms_order_item ORDER BY product_price DESC LIMIT10000) a
GROUP BY
order_id
因为在mysql5.7的时候,⼦查询的排序已经变为⽆效了,可能是因为⼦查询⼤多数是作为⼀个结果给主查询使⽤,所以⼦查询不需要排序的原因。
天蝎性格所以,对⼦查询的排序进⾏limit限制,此时⼦查询就不光是排序,此时排序会⽣效,但是限制条数却只能尽可能的设置⼤些。
窗⼝函数的⽅式
序号函数:ROW_NUMBER()、RANK()、DENSE_RANK()
SELECT
a.id,
a.product_price
FROM
(SELECT order_id, ROW_NUMBER ()OVER(PARTITION BY order_id ORDER BY product_price DESC)AS price_order,product_price FROM t_score ) a
头尾函数:FIRST_VALUE(expr)、LAST_VALUE(expr)
SELECT
id,
order_id,
product_price,
FIRST_VALUE ( product_price )OVER w AS first_price,
LAST_VALUE ( product_price )OVER w AS last_price
FROM
oms_order_item
WINDOW w AS(PARTITION BY order_id ORDER BY product_price )
由于mysql版本过低(8.0及以上才可使⽤窗⼝函数),⽆法使⽤。只是将⽤法记录⼀下。

本文发布于:2023-05-14 13:53:20,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/89/897440.html

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

标签:查询   数据   排序   字段
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图