mysql 怎样 clone 一条纪录?

2012-07-18 11:54:25 +08:00
 august
table 中有近百个 field ,其中 `ref_id`,`block_no`和`pile_no`是primary key, `ref_id` AUTO_INCREMENT.

新 clone 的纪录应该是`ref_id` +1 而 `block_no` 和 `pile_no` 不变

用 insert into `table` select * from `table` order by `ref_id` desc limit 1 很正常地失败了。

请教高手们,怎么在不将那近百个 field 名打一次的情况下 clone 一条只有 `ref_id` + 1的新纪录?

先谢了!
4035 次点击
所在节点    MySQL
2 条回复
mudone
2012-07-18 12:19:54 +08:00
create TEMPORARY table tmptable like table;
insert into tmptable select * from table order by id desc limit 1;
alter table tmptable drop id;
insert into table select '',tmptable.* from tmptable;

备注:仅仅为了解决clone,没有考虑其他因素,酌情使用。
august
2012-07-18 12:46:41 +08:00
@mudone 感谢你的回复。

发贴后没多久,我在 http://www.av8n.com/computer/htm/clone-sql-record.htm 里找到个方法,跟你的差不多,都是先建个临时表。再次感谢。

CREATE TEMPORARY TABLE chan2 ENGINE=MEMORY SELECT * FROM channel WHERE chanid=21051;
UPDATE chan2 SET chanid=21109; ## Change the unique key
## Update anything else that needs to be updated.
INSERT INTO channel SELECT * FROM chan2;
DROP TABLE chan2;

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/42695

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX