mysql用merge合并表

Posted shen1hua

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql用merge合并表相关的知识,希望对你有一定的参考价值。

merge合并表的要求

1.合并的表使用的必须是MyISAM引擎

2.表的结构必须一致,包括索引、字段类型、引擎和字符集

实例:

create table if not exists user1(

  id int(11) not null auto_increment,

  name varchar(50) default null,

  sex int(1) not null default 0,

  primary key (id)

)engine = MyISAM default charset = utf8 auto_increment=1;

 

create table if not exists user2(

  id int(11) not null auto_increment,

  name varchar(50) default null,

  sex int(1) not null default 0,

  primary key (id)

)engine = MyISAM default charset = utf8 auto_increment=1;

 

create table if not exists alluser(

  id int(11) not null auto_increment,

  name varchar(50) default null,

  sex int(1) not null default 0,

  primary key (id)

)engine = merge union=(user1,user2) insert_method = last auto_increment=1;

执行insert into alluser (name,sex) values (‘tian‘,1);报错如下:

ERROR 1168 (HY000): Unable to open underlying table which is differently defined or of non-MyISAM type or doesn‘t exist

百度了一下原来是默认字符集没写,修改如下

create table if not exists alluser1(

  id int(11) not null auto_increment,

  name varchar(50) default null,

  sex int(1) not null default 0,

  primary key (id)

)engine = merge union=(user3,user4) insert_method = last auto_increment=1 default charset=utf8;

执行insert into alluser1 (name,sex) values (‘tian‘,1);成功

执行select * from alluser1;显示如下:

+----+------+-----+
| id | name | sex |
+----+------+-----+
| 1 | tian | 1 |
+----+------+-----+

执行select * from user2;显示如下:

+----+------+-----+
| id | name | sex |
+----+------+-----+
| 1 | tian | 1 |
+----+------+-----+









以上是关于mysql用merge合并表的主要内容,如果未能解决你的问题,请参考以下文章

mysql查询数据怎么合并为一条

17、pandas的merge合并函数

MySQL学习随笔--通过实例理解merge ,temptable算法的差异

C++中STL中list的merge函数实现两个无序链表合并,合并后的链表是怎么排序的?例如合并1

Leetcode merge-k-sorted-lists(合并k路有序链表 最小堆)

merge函数为啥没有作为索引的一样的列名字会不一样