mysql中union和union all都是用来对子查询后结果列进行合并用的,两者最大的区别时union合并后没有重复数据,union all后会有重复数据,两者的列必须相同,数量相同,数据类型相似.
我们可以做个测试,首先创建两个表,分别为country和country2
----创建表一 country
create table country(
id int,
name varchar(50),
country varchar(50)
);
---创建表2 country2
create table country2(
id int,
country varchar(50)
);
--分别导入数据
insert into country values(1,'中国','CHINA');
insert into country values(2,'美国','USA');
insert into country values(3,'印度','INDAN');
insert into country values(4,'中国','CHINA');
insert into country2 values(1,'CHINA');
insert into country2 values(2,'USA');
insert into country2 values(3,'CHINA');
insert into country2 values(4,'INDAN');
在这里我们故意插入一些重复国家信息,用子查询分别查出country和country2的国家,然后union
select country from country
union
select country from country2;
union的结果如下:
然后操作union all:
select country fromcountry
union allselect country from country2;
结果:
结论:union和union all效果类似,union的结果没有重复数据,union all结果有重复数据。