基于从另一个表中有条件选择的MySQL更新表

时间:2018-11-13 21:53:10

标签: mysql database database-migration

TL; DR

我需要从表Matches_teams的每一行中选择两行和两列,并更新表Matches中的一行和4列。

我的问题:

请考虑以下示例:一个类似于足球幻想的数据库。有足球球队比赛,它们必须始终包括两支不同的球队,并且每支球队都有赔率

我有下表:

表匹配项:

Matches
-------- 
ID | date | team_winner_id | score

然后,我创建了联合表Matches_teams。以下,对于每个比赛,必须始终有两个不同的队伍,并分别具有赔率

Matches_teams
--------------
ID | team_id | match_id | odds 

Matches_teams表的示例记录:

 ID | team_id | match_id | odds
-------------------------------
 1  |    5    |    22     | 0.8
 2  |    6    |    22     | 2.2
 3  |   12    |    56     |  1
 4  |    3    |    56     | 2.1

现在我意识到联合表Matches_teams确实不是必需的。如果一场比赛只能并且将永远有两支球队,我可以像这样在Matches表中为每支球队及其赔率添加一列

Matches
-------- 
ID | team_a_id | team_a_odds | team_b_id | team_b_odds | date | team_winner_id | score

以上面的Matches_teams数据为例,我希望重组后的Matches数据看起来像这样:

Matches
ID | team_a_id | team_a_odds | team_b_id | team_b_odds | date | team_winner_id | score
---------------------------------------------------------------------------------------
22 |      5    |      0.8    |     6     |     2.2     |  ..  | ....
56 |     12    |       1     |     3     |     2.1     |  ..  | ....

任何MySQL操作可以做到这一点?根据给定的匹配ID,该操作将根据从Matches中选择的数据并在Matches_teams等于Matches.id的条件下更新Matches_teams.match_id的现有记录

0 个答案:

没有答案