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结果有重复数据。