mysql 分组取前10条数据
在MySQL中,要实现每个组(group)内取前10条数据,可以使用子查询结合变量来实现。以下是一个示例代码:
SET @rank=0;
SET @group_id=NULL;
SELECT * FROM (
SELECT
data.*,
@rank:= IF(@group_id = data.group_id, @rank + 1, 1) AS rank,
@group_id := data.group_id
FROM
(SELECT * FROM your_table ORDER BY group_id, your_order_column DESC) AS data
) AS ranked_data
WHERE ranked_data.rank <= 10;
在这个查询中,your_table
是你要查询的表名,group_id
是分组依据的字段,your_order_column
是你想根据哪个字段排序来确定“前10条数据”。
这段代码首先对整个表进行了排序,并且通过变量 @rank
和 @group_id
记录了当前的组别和排序顺序。外层查询中通过 WHERE
子句限制了每个组内只取前10条数据。
评论已关闭