【发布时间】:2021-04-06 15:04:44
【问题描述】:
我有一个名为“home”的表,用于存储阿森纳足球俱乐部在 2003-04 赛季主场联赛中的表现,而“away”表则存储阿森纳在同一赛季客场的表现。
Table `home`:
Opponent Goal_Scored Goal_Conceded
Everton 2 1
Aston Villa 2 0
Portsmouth 1 1
Newcastle United 3 2
Chelsea 2 1
Tottenham Hotspur 2 1
Fulham 0 0
Blackburn Rovers 1 0
Wolverhampton Wonderers 3 0
Middlesbrough 4 1
Table `away`:
Opponent Goal_Scored Goal_Conceded
Everton 1 2
Aston Villa 2 2
Portsmouth 1 2
Newcastle United 2 3
Chelsea 2 2
Tottenham Hotspur 2 3
Fulham 2 0
Blackburn Rovers 1 2
Wolverhampton Wonderers 3 2
Middlesbrough 1 4
请注意,一支球队获胜获得 3 分,平局获得 1 分,失败获得 0 分。
我想确定阿森纳赢得所有可用六分的球队数量。
为此,我编写了部分代码:
CREATE TABLE home (
Opponent varchar(60),
Goal_Scored int(8),
Goal_Conceded int(8)
);
CREATE TABLE away (
Opponent varchar(60),
Goal_Scored int(8),
Goal_Conceded int(8)
);
INSERT INTO home (Opponent, Goal_Scored, Goal_Conceded)
VALUES
("Everton",2,1),
("Aston Villa",2,0),
("Portsmouth",1,1),
("Newcastle United",3,2),
("Chelsea",2,1),
("Tottenham Hotspur",2,1),
("Fulham",0,0),
("Blackburn Rovers",1,0),
("Wolverhampton Wonderers",3,0),
("Middlesbrough",4,1);
INSERT INTO away (Opponent, Goal_Scored, Goal_Conceded)
VALUES
("Everton",1,2),
("Aston Villa",2,2),
("Portsmouth",1,2),
("Newcastle United",2,3),
("Chelsea",2,2),
("Tottenham Hotspur",2,3),
("Fulham",2,0),
("Blackburn Rovers",1,2),
("Wolverhampton Wonderers",3,2),
("Middlesbrough",1,4);
为了得到综合结果,我尝试了下面的代码,但没有产生预期的结果:
select a.opponent
from home a
where a.goals_scored > a.goals_conceded
union all
select b.opponent
from away b
where b.goals_scored > b.goals_conceded
然后我应该如何结合结果来获得阿森纳赢得所有可用六分的球队数量
【问题讨论】:
-
简单来说,您需要寻找目标得分 > 目标得分的球队,而不是实际计算和求和积分,您需要join the two tables。你知道如何加入吗?
-
(也就是说,您可以将两个表的点计算为子查询 - 或 MySQL 8+ 中的 CTE - 然后如果您愿意,可以加入它们。但您不需要,您只需要从每张桌子中找出获胜者。)
-
实际上,我需要加入,因为最终我必须找到所有那些阿森纳获得全部 6 分(主场赢 3 分,主场赢 3 分)的球队。客场获胜)...实际上,您是对的,goals_scored >goals_conceded 应该足够好,可以加入事情...