根据第二个表中输入的值更新MYSQL表

时间:2017-02-21 21:54:17

标签: mysql updating

我有一个包含体育比分和排名的数据库。我有一个像这样的排名表...

Team     Overall Record    Conference Record
Team1    5-0               2-0
Team2    4-1               1-1
Team3    3-2               0-2

我有一个游戏结果表......

Team    Result1  Result2   Result3  Result4   Result5  Result6
Team1   W        W         W        W         W
Team2   W        L         W        W         W
Team3   W        L         L        W         W

现在当我在下一场比赛中为Result6添加“W”时,有没有办法让它在积分榜中将Team1记录更新为6-0,或者如果它是“L”则将其更改为5-1 ?

2 个答案:

答案 0 :(得分:0)

你的桌面结构不好,我也有不好的报价!

 SET @teamname := 'team1';

 SELECT @myres := concat(Result1,Result2,Result3,Result4,Result5,Result6) -- and other columns
 FROM results
 WHERE team = @teamname;

 UPDATE sports_score
 SET overal = concat(
      length(@myres)-length(replace(@myres,'W',''))
 ,'-',
      length(@myres)-length(replace(@myres,'L',''))
 )
 WHERE team = @teamname ;

答案 1 :(得分:0)

这种方式的名称为“triggers”。更新后似乎与您的情况相符。

虽然正如其他人所说,但您的数据库设计远非完美。

基本上,@ r0xette提出了一个很好的建议:在你的“排名”表中保持胜利,失败和平局,然后你可以在触发器的更新中增加适当的列,你就不需要关心了之前的值并通过“游戏”表中的整组列/记录来计算你的“记录”对 - 你将在SELECT时间做,如:

SELECT concat( win, ' - ', loss) AS OverallRecord FROM standings WHERE team = 'team1';