mysql中union和union all的区别?

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 from country 
union all
select country from country2;

结果:

结论:union和union all效果类似,union的结果没有重复数据,union all结果有重复数据。

原文地址:https://www.cnblogs.com/shiji7/p/13628260.html