gpt4 book ai didi

mysql - 如何在一组数据中排序并在 MySQL 查询中按每个组中的最大值对组进行排序

转载 作者:行者123 更新时间:2023-11-30 23:40:34 27 4
gpt4 key购买 nike

我有一个看起来像这样的数据集:

id  entry_id  the_data
1 100 Z
2 300 B
3 100 C
4 200 F
5 300 Q
6 300 A
7 300 L
8 100 N
9 200 O

结果应该只给出每个对应条目(by entry_id)的 3 个最近的记录(by id),它们需要组合在一起(by entry_id),降序排序(by id),和(棘手的部分)分组的集合需要按最近的记录(按子集中的最高 ID)、下一个子集中的次高记录降序排序,依此类推。

所以,想要的结果应该是这样的:

id  entry_id  the_data
9 200 O
4 200 F
8 100 N
3 100 C
1 100 Z
7 300 L
6 300 A
5 300 Q

此查询接近,但未能按每个组内的最大 ID 对记录分组进行排序

select t1.id, t1.entry_id, t1.the_data
from mytable t1
where (
select count(t2.id) from mytable t2
where t2.entry_id = t1.entry_id and t2.id > t1.id
) <= 2
order by t1.entry_id desc, t1.id desc

结果是这样的:

id  entry_id  the_data
7 300 L
6 300 A
5 300 Q
9 200 O
4 200 F
8 100 N
3 100 C
1 100 Z

如何完成此查询以提供上述所需结果?

最佳答案

引入一个子查询,获取每个 entry_id 分组的最大 id,连接和排序,你就完成了...

select t1.id, t1.entry_id, t1.the_data
from mytable t1
inner join (
select entry_id, MAX(id) AS maxid
from mytable
group by entry_id
) maxs
on maxs.entry_id = t1.entry_id
where (
select count(t2.id) from mytable t2
where t2.entry_id = t1.entry_id and t2.id > t1.id
) <= 2
order by maxs.maxid desc, t1.entry_id desc, t1.id desc

关于mysql - 如何在一组数据中排序并在 MySQL 查询中按每个组中的最大值对组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3482350/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com