在数据更改时复制一行

时间:2015-07-16 12:50:31

标签: mysql

我有一个包含多个列的mysql表。在某些情况下,我运行一个复制行的脚本。

这是通过以下步骤完成的:

  1. 选择要复制的行中的所有列
  2. 结果数组中的
  3. 更改了30个中的两个值(新信息是使用php脚本动态构建的,并且对于该行是唯一的)。 可以在更新过程中随时创建这些值
  4. 使用通常的insert into...插入新行,使我再次列出所有30个字段和值
  5. 我的问题是:有没有办法将此脚本更改为:

    1. 创建新值
    2. 运行一个将复制行的同一个查询,同时在复制时更新值?
    3. 所以我不需要在php中操作数组而只运行一个查询而不是两个查询?

1 个答案:

答案 0 :(得分:1)

您可以使用单个查询执行此操作,但您需要列出所有字段:

INSERT INTO your_table
SELECT
   NULL, #in place of auto-increment column (if any)
   'some value for the field you want to change',
   'some value for another field you want to change',
   not_changed_field1,
   not_changed_field2,
   ...
FROM your_table
WHERE <row has to be duplicated>