PHP,MySQL:重复一系列行,但更改1列?
我有一个名为scheduler\u sched的表,它有几个列,包括一个名为schedule\u id的列 我需要一个函数,我可以传递2个id(从\u id复制\u,复制\u到\u id)作为参数。我需要做的是将schedule\u id=copy\u from\u id的每一行复制,但将copy\u from\u id更改为copy\u to\u id 所以基本上我想说的是,与此等价:PHP,MySQL:重复一系列行,但更改1列?,php,sql,mysql,php4,Php,Sql,Mysql,Php4,我有一个名为scheduler\u sched的表,它有几个列,包括一个名为schedule\u id的列 我需要一个函数,我可以传递2个id(从\u id复制\u,复制\u到\u id)作为参数。我需要做的是将schedule\u id=copy\u from\u id的每一行复制,但将copy\u from\u id更改为copy\u to\u id 所以基本上我想说的是,与此等价: UPDATE scheduler_sched SET schedule_id = 32 WHERE sche
UPDATE scheduler_sched SET schedule_id = 32 WHERE schedule_id = 28
只是我不想更新任何行,我想用新ID创建重复项
这有意义吗
我该怎么做
谢谢
(顺便说一句,schedule_id在此表中不是唯一的/索引字段)只需插入新行,而不是更新。如果计划id 28存在,请选择first,如果存在,请插入一个新的计划id。我认为重复密钥更新语法可能会帮助您: e、 g:
因为您还没有指定MySQL的版本,所以我假设它是最新的(5.4) 假设我对您的理解正确,您应该能够使用触发器实现这一点:
使用触发器的好处之一是,它完全由数据库本身处理。实际上我使用的是4.1.22,很抱歉没有指定
Insert into scheduler_sched (column1, column2, column3,schedule_id )
Select column1, column2, column3, 32 from scheduler_sched WHERE schedule_id = 28
Insert into scheduler_sched (column1, column2, column3,schedule_id )
Select column1, column2, column3, 32 from scheduler_sched WHERE schedule_id = 28