导读
在办公的时候,看见同事写的SQL语句中有UNION和UNION ALL操作符,不明白这两个的作用是什么,就百度尝试下,下面简单介绍下。
语法
SQL UNION 语法
SELECT column_name(s) FROM table_name1UNIONSELECT column_name(s) FROM table_name2
注意:默认地UNION 操作符选取不同的值。如果允许重复的值,请使用 UNION ALL。
SQL UNION ALL 语法
SELECT column_name(s) FROM table_name1
UNION ALL
SELECT column_name(s) FROM table_name2
注意:UNION 结果集中的列名总是等于 UNION 中第一个 SELECT 语句中的列名。
使用
首先新建两个数据库,简单的来说就是两个地区的部门信息吧:
-- ----------------------------
-- Table structure for dept_sh
-- ----------------------------
DROP TABLE IF EXISTS `dept_sh`;
CREATE TABLE `dept_sh` (
`e_id` int(11) NOT NULL AUTO_INCREMENT,
`e_name` varchar(255) DEFAULT NULL,
`e_Address` varchar(255) DEFAULT NULL,
PRIMARY KEY (`e_id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of dept_sh
-- ----------------------------
INSERT INTO `dept_sh` VALUES ('1', '同济大学部', '上海');
INSERT INTO `dept_sh` VALUES ('2', '上海理工大学部', '上海');
INSERT INTO `dept_sh` VALUES ('3', '复旦大学部', '上海');
INSERT INTO `dept_sh` VALUES ('4', '中国科技大部门', 'China');
-- ----------------------------
-- Table structure for dept_hz
-- ----------------------------
DROP TABLE IF EXISTS `dept_hz`;
CREATE TABLE `dept_hz` (
`e_id` int(11) NOT NULL AUTO_INCREMENT,
`e_name` varchar(255) DEFAULT NULL,
`e_Address` varchar(255) DEFAULT NULL,
`e_mobile` varchar(255) DEFAULT NULL,
PRIMARY KEY (`e_id`)
) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of dept_hz
-- ----------------------------
INSERT INTO `dept_hz` VALUES ('1', '浙江大学部门', '浙江', '368454');
INSERT INTO `dept_hz` VALUES ('2', '杭州电子科技大部门', '浙江', '974252');
INSERT INTO `dept_hz` VALUES ('3', '浙江师范大学部门', '浙江', '892975');
INSERT INTO `dept_hz` VALUES ('4', '中国科技大部门', 'China', '123456');
里面数据有一条是重复的(中国科技大部门),两个表加起来一共8条数据。
使用UNION
SELECT e_name,e_address from dept_hz
UNION
SELECT e_name,e_address from dept_sh
控制台显示结果:
一共7条数据,少了一条重复性的数据。
使用UNION ALL
SELECT e_name,e_address from dept_hz
UNION ALL
SELECT e_name,e_address from dept_sh
控制台显示结果:
一共8条数据,重复性的数据也显示在列表中。
总结
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
注意:UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。
