Mysql

关注公众号 jb51net

关闭
首页 > 数据库 > Mysql > Mysql 复制一行数据

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= ** ;

阅读全文