【问题标题】:INSERT new history rows based on results from UPDATE query根据 UPDATE 查询的结果插入新的历史记录行
【发布时间】:2016-04-29 17:29:18
【问题描述】:

我愿意

UPDATE table SET column = 1 where column = 0;

INSERT (rows i just updated) INTO history_table;

我能否以某种方式存储来自选择查询的 id,然后使用这些 UPDATE 并随后将匹配这些 id 的行插入到历史表中?

【问题讨论】:

标签: mysql


【解决方案1】:

INSERT INTO history_table(id) (SELECT id from table WHERE column = 0);

UPDATE table SET column = 1 where column = 0;

这样您只会获得将要为 history_table 更新的 ID,然后您可以将它们更新为正确的值。

【讨论】:

  • 感谢@jyncka,排序是个好主意,因为我还必须在插入时将选定的行列从值 0 转换为 1。我不喜欢事务是非原子的,但也许没关系。
【解决方案2】:

(我还不能发表评论)是否有特定的理由只做一次查询? 如果没有,那么您可以使用临时表来存储 id 并使用子查询获取它们以进行更新和插入。

【讨论】:

    猜你喜欢
    • 2014-01-22
    • 1970-01-01
    • 1970-01-01
    • 2015-12-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多