分享、学习、提高
2007/03/14 13:52
文章作者:Enjoy 转载请注明原文链接。
读《MySQL5权威指南》第3版的一些记录:

CREATE TABLE newtable SELECT * FROM oldtable

从oldtable中选中数据建立新表,但用此法旧表的索引,列的auto_increment属性和默认值属性在新表中就不见了。为避免这种情况,应该先建立新表,再添加数据。

CREATE TABLE newtable LIKE oldtable
INSERT INTO newtable SELECT * FROM oldtable

使用INSERT INTO newtable SELECT * FROM oldtable时必须保证源表和目标表的结构完全一致。如果不完全一致,则需要将所有字段列出来。
INSERT INTO newtable SELECT id,addtime,title FROM oldtable
或者
INSERT INTO newtable (id,addtime,title) SELECT id,addtime,title FROM oldtable

如果源和目标有ID编号相同的记录,则会出现一些问题。
使用INSERT IGNORE INTO ...,受影响的记录不参加复制。
用REPLACE ...命令代替INSERT INTO ...命令,受影响的记录在复制过程中被覆盖
对ID做出一些调整,不让其发生冲突。
SELECT @maxid :=MAX(id) from newtable
INSERT INTO newtable SELECT id + @maxid, addtime,title FROM oldtable.
发表评论
表情
emotemotemotemotemot
打开HTML
打开UBB
打开表情
隐藏
昵称   密码   游客无需密码
网址   电邮   [注册]