如何使用填充旧表中的行的动态数据动态更新新MySQL表中的行?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用填充旧表中的行的动态数据动态更新新MySQL表中的行?相关的知识,希望对你有一定的参考价值。

我有以下SQL代码,可以很好地将数据行从旧表传输到新表。 (在mysql工作台中工作)

INSERT INTO us_compensation.RPBAR 
(ORG_SEC_ID ,
FYE, 
TOTAL_SALARY_PAID , 
OTHER_COMP_PAID ,
TOTAL_BONUS_PAID , 
PERFORMANCE_EQUITY_TIME_VESTING_OPTIONS_TIME_VESTING_STOCK,
TOTAL) 
SELECT DISTINCT
    ORG_SEC_ID,
    FYE,
    TOTAL_SALARY_PAID,
    OTHER_COMP_PAID,
    TOTAL_BONUS_PAID,
    PERFORMANCE_EQUITY + TIME_VESTING_OPTIONS + TIME_VESTING_STOCK,
    TOTAL_SALARY_PAID + OTHER_COMP_PAID + TOTAL_BONUS_PAID
      + PERFORMANCE_EQUITY + TIME_VESTING_OPTIONS + TIME_VESTING_STOCK
FROM
    equilar.realizablepay
group by ORG_SEC_ID
HAVING MAX(FYE);

我需要帮助的是以下内容。当新数据进入时,旧表中的行会自动更改。但是,新表(RPBAR)中的行不会反映新数据。会发生的情况是,新表的所有行都包含旧表中的旧数据,并在新表的底部附加了旧表中的新数据。

我希望新表不将旧数据存储在行中,而是使用旧表中的新数据更新相关行(其中所有相关行都使用新数据更新)。

如何使新表反映旧表行中的新数据,而不是新表既包含旧数据又包含新数据?

答案

你想在你的新桌子上创建一个trigger。在该触发器中,您可以执行多个语句以有条件地更新旧表。

另一答案

也许你只是想要一个VIEW

CREATE VIEW us_compensation.RPBAR AS
  SELECT DISTINCT
           ORG_SEC_ID,
           FYE,
           TOTAL_SALARY_PAID,
           OTHER_COMP_PAID,
           TOTAL_BONUS_PAID,
           PERFORMANCE_EQUITY + TIME_VESTING_OPTIONS + TIME_VESTING_STOCK
             AS PERFORMANCE_EQUITY_TIME_VESTING_OPTIONS_TIME_VESTING_STOCK,
           TOTAL_SALARY_PAID + OTHER_COMP_PAID + TOTAL_BONUS_PAID
             + PERFORMANCE_EQUITY + TIME_VESTING_OPTIONS + TIME_VESTING_STOCK
             AS TOTAL
  FROM     equilar.realizablepay
  GROUP BY ORG_SEC_ID
  HAVING   MAX(FYE)
;

以上是关于如何使用填充旧表中的行的动态数据动态更新新MySQL表中的行?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 if 语句中显示/比较 mysql 行的动态值?

如何使用 JQuery 从动态 html 表中获取选定的行值?

如何在node express js上动态更新mysql中的行

使用其他行的数据更新同一表中的行 SQL

可以使用表中的行值在加载时动态构建组合框吗?

jsp页面中如何动态创建表格的行列