PHP,MySQL:重复一系列行,但更改1列?

时间:2009-10-27 17:10:41

标签: php sql mysql php4

我有一个名为scheduler_sched的表,它有几列,包括一个名为schedule_id的列。

我需要一个函数,我可以传递2个ID(copy_from_id,copy_to_id)作为参数。我需要做的是将每行调用schedule_id = copy_from_id并复制它,但将copy_from_id更改为copy_to_id

所以基本上我想要相当于这个:

UPDATE scheduler_sched SET schedule_id = 32 WHERE schedule_id = 28

只有我不想更新任何行,我想创建带有新ID的副本

这有意义吗?

我该怎么做?

谢谢!

(顺便说一句,schedule_id不是此表中的唯一/索引字段)

4 个答案:

答案 0 :(得分:2)

Insert into scheduler_sched (column1, column2, column3,schedule_id ) 
Select column1, column2, column3, 32 from scheduler_sched WHERE schedule_id = 28

答案 1 :(得分:1)

我认为ON DUPLICATE KEY UPDATE语法可以帮助你:

http://dev.mysql.com/doc/refman/5.1/en/insert-on-duplicate.html

e.g:

INSERT INTO table (a,b,c) VALUES (1,2,3)
  ON DUPLICATE KEY UPDATE c=c+1;

答案 2 :(得分:0)

只需插入新行而不是更新。如果schedule_id 28存在,则首先选择SELECT,如果存在,则插入一个新的,其中包含ID。

答案 3 :(得分:0)

由于您尚未指定MySQL的版本,我将假设它是最新的(5.4)。

假设我正确理解你,你应该能够使用触发器实现这一点:http://dev.mysql.com/doc/refman/5.4/en/create-trigger.html

使用触发器的一个好处是它全部由数据库本身处理。