代码之家  ›  专栏  ›  技术社区  ›  Loren Pechtel

在MYSQL更新命令之前如何获取值?

  •  0
  • Loren Pechtel  · 技术社区  · 8 年前

    我有一句台词:

    Update <Table> Set <Value> = @NewValue Where RecordID = @RecordID;
    

    然而,现在我发现自己需要用这个值的变化来更新另一个表。很明显,我可以单独查询以获取原件,也可以在最初阅读时保存原件。不过,优雅的答案是以某种方式归还它。

    (RecordID是唯一的,不会返回多个值。)

    1 回复  |  直到 8 年前
        1
  •  0
  •   Barmar    8 年前

    可以在一个查询中更新两个表

    UPDATE t1
    CROSS JOIN t2
    SET t2.<value> = t1.<value>,
        t1.<value> = @NewValue
    WHERE t1.RecordID = @RecordID1
    AND t2.RecordID = @RecordID2
    

    如果两个表的行是相关的,则使用 INNER JOIN 而不是 CROSS JOIN ,然后把 t2 那里的情况。