一、概述

unionunion all都用于合并多个查询的结果,用法为:

select * from a union select * from b;
select * from a union all select * from b;

两者的区别是union all中会有重复记录,而union中没有。

二、示例

创建两张表chinesemath分别表示语文课和数学课的选课情况:

CREATE TABLE chinese (
  id   INT UNSIGNED PRIMARY KEY  AUTO_INCREMENT,
  name VARCHAR(50) NOT NULL
);
INSERT INTO chinese (name) VALUES ("小明"), ("小花"), ("小白"), ("小刚");
CREATE TABLE math (
  id   INT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
  name VARCHAR(20) NOT NULL
);
INSERT INTO math (name) VALUES ("小明"), ("小李"), ("老王");

两张表中有同一条记录小明

2.1 使用union

SELECT name FROM chinese
UNION
SELECT name FROM math;

结果中没有重复记录小明

2.2 使用union all

SELECT name FROM chinese
UNION ALL
SELECT name FROM math;

结果中有重复记录小明

最后修改:2017 年 12 月 12 日
如果觉得我的文章对你有用,请随意赞赏