【问题标题】:How do I dynamically update rows in the new MySQL table with dynamic data populating the rows in the old table?如何使用填充旧表中行的动态数据动态更新新 MySQL 表中的行?
【发布时间】:2012-11-11 22:19:50
【问题描述】:

我有以下 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) 中的行不会反映新数据。发生的情况是,新表包含旧表中的旧数据的所有行,并在新表的底部追加进入旧表的新数据。

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

如何让新表在旧表的行中反映新数据,而不让新表既有旧数据又有新数据?

【问题讨论】:

    标签: mysql dynamic rows transfer


    【解决方案1】:

    您需要在新表上创建一个trigger。在该触发器中,您可以执行多个语句来有条件地更新旧表。

    【讨论】:

    • 我正在使用 eggyall 的建议来创建视图。我不熟悉触发器(SQL 新手),但现在正在阅读它。
    【解决方案2】:

    也许您只是想要一个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)
    ;
    

    【讨论】:

    • 谢谢。但是由于表 RPBAR 已经存在(作为第二个表),我如何在不尝试创建 RPBAR 的情况下包含视图语句?
    • @user1542006:先删除表。
    • 好的。我所做的将 RPBAR 重命名为 RPBAR1 并且执行成功,但影响了 0 行。我有大约 4000 行。此外,未显示结果视图。
    • @user1542006:您已经创建了一个视图(这是一种虚拟表);现在 SELECT * FROM us_compensation.RPBAR 就像在普通桌子上一样。
    • 我的错误-查询完美。一个问题。 “视图”与“表”有何不同?我将需要使用 VIEW 中的数据——使用 Python 程序提取所有数据并将这些数据用于其他功能。 VIEW 允许我这样做吗?
    猜你喜欢
    • 1970-01-01
    • 2016-01-08
    • 1970-01-01
    • 2021-05-31
    • 1970-01-01
    • 1970-01-01
    • 2012-01-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多