【发布时间】:2020-12-08 18:43:39
【问题描述】:
请参阅另一个 Stack Overflow 问题 here,但那里的答案不包括 group_id 3 播放器。 我试图在 MySQL 中复制答案,但我不熟悉 PostgreSQL。任何人都可以展示如何在 MySQL 中进行操作?
问题是从每个组返回最高得分球员winner_id
create table players (
player_id integer not null unique,
group_id integer not null
);
create table matches (
match_id integer not null unique,
first_player integer not null,
second_player integer not null,
first_score integer not null,
second_score integer not null
);
insert into players values(20, 2);
insert into players values(30, 1);
insert into players values(40, 3);
insert into players values(45, 1);
insert into players values(50, 2);
insert into players values(65, 1);
insert into matches values(1, 30, 45, 10, 12);
insert into matches values(2, 20, 50, 5, 5);
insert into matches values(13, 65, 45, 10, 10);
insert into matches values(5, 30, 65, 3, 15);
insert into matches values(42, 45, 65, 8, 4);
matches表
match_id | first_player | second_player | first_score | second_score
----------+--------------+---------------+-------------+--------------
1 | 30 | 45 | 10 | 12
2 | 20 | 50 | 5 | 5
13 | 65 | 45 | 10 | 10
5 | 30 | 65 | 3 | 15
42 | 45 | 65 | 8 | 4
预期输出
group_id | winner_id
----------+-----------
1 | 45
2 | 20
3 | 40
【问题讨论】:
-
您的问题应该有一个问题,而不是链接。
-
Partition by在 MySQL 版本 8 之前不受支持。所以要么升级,要么使用这样的解决方法; stackoverflow.com/a/20432371/8194026
标签: mysql sql select greatest-n-per-group