merge表 注意:1 每个子表的结构必须一致,主表和子表的结构需要一致,2 每个子表的索引在merge表中都会存在,所以在merge表中不能根据该索引进行唯一性检索。3 子表需要是myisam引擎4 auto_increment 不会按照你所期望的方式工作。建表语句create table tab
merge表
注意:1 每个子表的结构必须一致,主表和子表的结构需要一致,2 每个子表的索引在merge表中都会存在,所以在merge表中不能根据该索引进行唯一性检索。3 子表需要是myisam引擎4 auto_increment 不会按照你所期望的方式工作。建表语句create table tablename(正常的字段)engine=merge insert_method=lastinsert_method:有两个值如下:last 如果你执行insert 指令来操作merge表时,插入操作会把数据添加到最后一个子表中。first 同理,执行插入数据时会把数据添加到第一个子表中。例子:create table user1(id int(10) not null auto_increment,name varchar(50),sex int(1),primary key(id))engine=myisam charset=utf8;create table user2(id int(10) not null auto_increment,name varchar(50),sex int(10),primary key(id))engine=myisam charset=utf8;insert into user1 (name,sex) values('张三',0);insert into user2 (name,sex) values('lisi',1);mysql> select * from user1;+----+------+------+| id | name | sex |+----+------+------+| 1 | 张三 | 0 |+----+------+------+mysql> select * from user2;+----+------+------+| id | name | sex |+----+------+------+| 1 | lisi | 1 |+----+------+------+create table alluser(id int(10) not null auto_increment,name varchar(50),sex int(10),index(id))type=merge union=(user1,user2) insert_method=last;mysql> select * from alluser;+----+------+------+| id | name | sex |+----+------+------+| 1 | 张三 | 0 || 1 | lisi | 1 |+----+------+------+mysql> insert into alluser(name,sex) values('嘿嘿',0);mysql> select * from user1;+----+------+------+| id | name | sex |+----+------+------+| 1 | 张三 | 0 |+----+------+------+1 row in set (0.00 sec)mysql> select * from user2;+----+------+------+| id | name | sex |+----+------+------+| 1 | lisi | 1 || 2 | 嘿嘿 | 0 |+----+------+------+2 rows in set (0.00 sec)//他把这条数据存入了user2表里是因为我们的insert_method的参数填写的是lastmysql> update alluser set sex=replace(sex,0,1) where id=2;+----+------+------+| id | name | sex |+----+------+------+| 1 | 张三 | 0 || 1 | lisi | 1 || 2 | 嘿嘿 | 1 |+----+------+------+
作者:maildocgaojingru 发表于2013-8-26 17:32:27 原文链接
阅读:53 评论:0 查看评论
原文地址:mysql-merge合并表, 感谢原作者分享。