【MySQL】分组排序取每组第一条数据
在MySQL中,要取每组数据的第一条,可以使用GROUP BY
语句配合聚合函数,并结合子查询或者是JOIN
操作来实现。以下是一个示例,假设我们有一个orders
表,它有customer_id
和order_date
字段。我们想要获取每个客户最新的订单。
SELECT o1.*
FROM orders o1
JOIN (
SELECT customer_id, MAX(order_date) as latest_order_date
FROM orders
GROUP BY customer_id
) o2 ON o1.customer_id = o2.customer_id AND o1.order_date = o2.latest_order_date;
在这个查询中,内部查询(子查询)用于找出每个客户的最新订单日期,然后外部查询通过JOIN
根据这些信息取出每组的第一条数据。这里使用MAX
聚合函数来获取最新的订单日期,你也可以使用MIN
来获取最早的订单数据。
评论已关闭