【问题标题】:Add a field to represent a condtionally calculated value添加一个字段来表示条件计算的值
【发布时间】:2015-12-01 05:50:46
【问题描述】:

我正在尝试向我的表中添加一个新列,该列是其他两个列之间的差异,如下所示。

ALTER TABLE GB
ADD COLUMN spread INT;

UPDATE GB
SET spread = (home_score-away_score)
WHERE GB.team = GB.home;

UPDATE GB
SET spread = (away_score-team_score)
WHERE GB.team = GB.away;

【问题讨论】:

  • 那么,有什么问题?
  • 您可以使用插入/更新触发器。
  • @David Allen Stern - 你能分享当前的表结构吗?

标签: mysql view


【解决方案1】:

我强烈建议创建一个视图,而不是添加第三列来表示派生信息。这样你的视图就会一直有更新的信息。

CREATE VIEW v1 AS(
   SELECT *,(CASE 
        WHEN GB.team = GB.home THEN
             home_score-away_score
        ELSE 
             away_score-team_score 
        END
   )AS spread FROM GB
)

【讨论】:

    【解决方案2】:

    我认为最好不要创建额外的列。您可以使用select 语句轻松获得所需的结果,如下所示

    select id,team,home,away,home_score,away_score,team_score,
    if(GB.team = GB.home,home_score-away_score,away_score-team_score) as spread  from gb
    

    如果需要小修改,请在投反对票前告诉我

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-12-05
      • 2017-12-23
      • 1970-01-01
      • 1970-01-01
      • 2023-03-14
      相关资源
      最近更新 更多