一直在寻找这方面的例子,但显然我不知道的术语不够好,找到了答案:重复的记录到同一个表的变化PHP的MySQL
利用PHP/MySQL的,我试图复制在编辑数据的一部分时在表格中记录。
有一个现有的表的“信息”,看起来像这样:
1 ID - Int11 AutoIncrement
2 elementID - Int11 Unique
3 text - text utf8
4 loopID - Int11
5 created - datetime
6 modified - datetime
两者“elementID”和“loopID”字段包含在其中的最后四位数字代表一个嵌入式标识符值,在这种情况下系统中的'页面'。因此,例如:
页 '9000' elementID的记录为
100019000
100029000
100039000
和页面 '9000' loopID的记录为
1009000
1019000
1029000
页 '9001' elementID的记录被记录为
100019001
100029001
100039001
和Page'9001'loopID的记录被记录为
1009001
1019001
1029001
希望你能明白。
我想要做的是创建一个新页面(比如9002),最终用户可以选择从前一页复制所有记录数据(比如在这种情况下,他们想复制9001)。
在深入研究之前,我真的需要明白最好的方法是什么。
起初我以为我想要查询所有匹配9001的记录到一个数组中,用元素ID和循环中的所有最后4位9001替换为9002,将“创建”和“修改”日期替换为今天,然后将结果数组作为新条目写回数据库中?如果是这样,在替换发生的时候,在查询期间还是在回写数据库期间?
接着,当我开始还以为这是导致我不知道这是否应该以这样的方式来完成与此类似,而不是:
INSERT INTO information...
SELECT REPLACE...
FROM information
[WHERE ..]
我可以看到有涉及这一点,产生它足够的元素对于像我这样的数据库业余爱好者来说并不容易......如果有人能指点我一个这个过程的适当例子,那将是一个很大的帮助。
嗨,非常感谢!托比可能是正确的,因为我的经验(或缺乏) - 但这看起来太酷了,不会尝试......我遵循这里的想法,虽然你比我的朋友聪明得多;-)不知道我明白'where elementID mod 10000'部分 - 我认为国防部是为了返回分部剩余部分?所以我很难包装我的头怎么会输出...我会一直在想一些更像substr($ input,-4)...?无论如何,我一定会试一试并再次报告tx! – Soyo
剩余部分正是你想要的。看看这些例子http://sqlfiddle.com/#!2/c960a/39当divider是一个10,100,1000等等时,它只会剪掉上面的部分,类似于substring,但是数字。 –