前言:
爲了方便自己能夠更好的理解,今天我想做一個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 將倆張表中的武漢加油都返回了。