首页 > 解决方案 > MySQL 基于另一个表的条件选择更新表

问题描述

TL;博士

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

我的问题:

考虑这个例子:一个类似足球幻想的数据库。有足球队比赛必须总是包括两支不同的球队,每支球队都有赔率。

我有以下表格:

表匹配:

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

然后我创建了联合表Matches_teams。以下,对于每场比赛,它必须始终有 2 支不同的球队,他们各自的赔率

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.idMatches_teams.match_id

标签: mysqldatabasedatabase-migration

解决方案


推荐阅读