【发布时间】:2021-05-13 17:28:12
【问题描述】:
我有这两张表:
CREATE TABLE Category (
CategoryID int NOT NULL,
CategoryName varchar(255),
PRIMARY KEY (CategoryID)
);
CREATE TABLE Team (
CategoryID int NOT NULL,
TeamName varchar(255) NOT NULL,
Points int(255),
PRIMARY KEY (TeamName),
FOREIGN KEY (CategoryID) REFERENCES Category(CategoryID)
);
我想从每个类别中找出得分最高的球队。
到目前为止,我已经尝试过这些,我知道它们是错误的,但我走上了死胡同。任何建议都会有所帮助。
SELECT category.categoryid, team.teamname, MAX(team.points)
FROM category, team
GROUP BY team.teamname
HAVING MAX(team.points);
select category.categoryid, team.teamname
from category
right join team on team.categoryid = category.categoryid
group by team.teamname
having max(team.points);
select team.categoryid, team.teamname
from team, team a
having max(team.points);
select category.categoryid, team.teamname, max(team.points), team.points
from team
inner join category on category.categoryid = team.categoryid
group by teamname
having (select distinct max(team.points) from team);
select category.categoryid, team.teamname, team.points
from team
inner join category on category.categoryid = team.categoryid;
【问题讨论】:
-
RANK() OVER (PARTITION BY CategoryID ORDER BY Points DESC) rnk在 CTE 中,WHERE rnk = 1在外部查询中。 -
好吧
int(50)哇 -
@Akina 你能花点时间解释一下这是做什么的吗?我是 SQL 新手,我宁愿完全理解我在做什么,也不愿复制粘贴它
-
@RiggsFolly 是的,我知道,对不起!
标签: mysql sql mysql-workbench