前言:
为了方便自己能够更好的理解,今天我想做一个union和union all的简单小测试,。
概述:
union : 对俩个结果集进行并集操作,不包含重复行,同时进行默认规则的排序。
union all: 对俩个结果集进行并集操作,包含重复行,不进行排序。
演示:
注:下面的例子没有对结果集排序。
- (1)新建俩张表 linkman 和linkman2
CREATE TABLE `linkman` (
`id` int(11) NOT NULL COMMENT '序号',
`linkman_name` varchar(255) DEFAULT NULL COMMENT '联系人名称',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
CREATE TABLE `linkman2` (
`id` int(11) NOT NULL COMMENT '序号',
`linkman_name` varchar(255) DEFAULT NULL COMMENT '联系人名称',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
- (2) 往表里面添加数据
INSERT INTO `linkman`(`id`, `linkman_name`) VALUES (1, '张三的员工1');
INSERT INTO `linkman`(`id`, `linkman_name`) VALUES (2, '张三的员工2');
INSERT INTO `linkman`(`id`, `linkman_name`) VALUES (3, '武汉加油');
INSERT INTO `linkman`(`id`, `linkman_name`) VALUES (4, '李四的员工1');
INSERT INTO `linkman`(`id`, `linkman_name`) VALUES (5, '李四的员工2');
INSERT INTO `linkman2`(`id`, `linkman_name`) VALUES (1, '消炎');
INSERT INTO `linkman2`(`id`, `linkman_name`) VALUES (2, '肺炎');
INSERT INTO `linkman2`(`id`, `linkman_name`) VALUES (3, '武汉加油');
- (3) 测试
- union 的查询结果
- 可以看到 union 只返回了一个武汉加油。
union all 的查询结果
可以看到 union all 将俩张表中的武汉加油都返回了。