mysql 复制行数据命令经验分享(Mysql 复制一条数据)
作者:39879881
没主键
如有有自增字段不需要写
insert into tt (f1,f2) select f1,f2 from tt
有主键
两步走
第一步排除主键字段,第二步,把结果复制到插入语句中去,执行,它数据是翻倍的,随便执行几次就有几百条了。。。
SELECT GROUP_CONCAT( column_name SEPARATOR ',' ) FROM information_schema.COLUMNS WHERE column_name <> '想要排除的字段名' AND table_name = '表名字' GROUP BY table_name; insert into 表名 (排除字段后剩余字段) select 排除字段后剩余字段 from 表名;
注意最后没有where,直接就是全表数据复制。
mysql编程
这个就是像写代码一样,搞一个循环,可以定义变量接收结果。。然后执行。
这个还是比较复杂,等有空了我再来写出来吧。
下面是比较好的方案
Mysql 复制一条数据
从不同的表复制
insert into 表1 select * from 表2 where id =** ;
同一张表中复制(无主键)
insert into 表1 select * from 表1 where id =** ;
同一张表中复制(有主键)
insert into 表1(字段1,字段2,字段3) select 字段1,字段2,字段3 from 表1 where id= ** ;
实例讲解
一、复制表里面的一条记录并插入表里面
insert into article(title,keywords,desc,contents) select title,keywords,desc,contents from article where article_id = 100;
二、复制表里的多条数据/记录,并插入到表里面
① INSERT INTO `power_node`(title,type,status) SELECT title,type,status FROM power_node WHERE id < 5;
② INSERT into jiaban (num,overtime) SELECT num,overtime from jiaban where id IN(1,3,5,6,7,9);
三、在创建表时,就插入另一张表里面的某些数据
① create table user AS select * from member where id < 10
CREATE TABLE 表1 as select * from 表2;
as创建出来的表1(新表)缺少表2(源表)的索引信息,只有表结构相同,没有索引。
CREATE TABLE 表1 like 表2;
like 创建出来的新表包含源表的完整表结构和索引信息
as用来创建相同表结构并复制源表数据
like用来创建完整表结构和全部索引
oracle支持as,也是只有表结构没有索引;oracle不支持like。
脚本之家小编补充
针对dede的一些复制表出错的解决方案
软件
文章
输入 id
其实就是在 addonarchive或anaddsoft adonarticle 中添加这个 id 什么的,可以从别的id复制一条(文章复制文章 软件复制软件的)
insert into dede_archives select typeid,channel,adminID,title from dede_archives where id=**;
最后的id为要复制的文件或软件id
默认id是自增加字符,需要复制后再进行修改为想要增加的id才可以。
insert into 表1(字段1,字段2,字段3) select 字段1,字段2,字段3 from 表1 where id= ** ;