【发布时间】:2023-03-29 10:43:01
【问题描述】:
我知道此类问题已被多次询问,但我无法为我的问题找到一个好的答案。 我试图从表中获取每个人的前 3 条查看记录。
我的表
id user_id views
1 5 6
2 5 3
3 6 5
4 7 4
5 9 14
6 5 3
7 5 8
8 6 7
9 7 15
10 9 13
11 9 13
12 9 18
13 6 8
14 8 0
结果
id user_id views
12 9 18
9 7 15
5 9 14
10 9 13
13 6 8
7 5 8
8 6 7
1 5 6
3 6 5
4 7 4
2 5 3
14 8 0
我点击了这个链接http://www.xaprb.com/blog/2006/12/07/how-to-select-the-firstleastmax-row-per-group-in-sql/
我的查询
select *
from mytable
where (
select count(*) from mytable as f
where f.user_id = mytable.user_id and f.views >= mytable.views
) < 4 order by user_id desc;
但是这个查询没有获取那些视图相等的记录。 请指出正确的方向。
【问题讨论】:
-
我不清楚你的问题。但是,您可以通过此查询简单地获得结果(您在帖子中提到)...
SELECT * FROM mytable ORDER BY views DESC -
@TunZarniKyaw 差不多。 [10, 9, 13] 和 [11, 9, 13 ] 不在结果集中。
-
@TunZarniKyaw,我试图从表中仅获取每个用户的 3 条浏览次数最多的记录。以上只是示例数据,有多个用户条目。我只需要每个用户的 3 条观看次数最多的记录。
-
@TarynEast, [10, 9, 13] 或 [11, 9, 13] 我需要其中任何一个,而不是两者都需要
-
MySQL 缺少使这变得容易的分析函数,但有一些选项:xaprb.com/blog/2006/12/07/…
标签: mysql sql select group-by limit