SQL UNION 操作符
UNION 操作符用于合并两个或多个 SELECT 语句的结果集。
请注意,UNION 内部的 SELECT 语句必须拥有相同数量的列。列也必须拥有相似的数据类型。同时,每条 SELECT 语句中的列的顺序必须相同。
SQL UNION 语法
SELECT column_name(s) FROM table_name1
UNION
SELECT 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 语句中的列名。
一、前期准备:
drop tableif exists empCN;
create table empCN (ID INT,Name VARCHAR(20));
drop tableif exists empUSA;
create table empUSA (ID INT,Name VARCHAR(20));
– 插入数据
insert into empCN(ID,Name) VALUES(1,'ZhangHua');
insert into empCN(ID,Name) VALUES(2,'WangWei');
insert into empCN(ID,Name) VALUES(3,'Cart Thomas');
insert into empCN(ID,Name) VALUES(4,'YangMing');
insert into empUSA(ID,Name) VALUES(1,'Adams John');
insert into empUSA(ID,Name) VALUES(2,'Bush George');
insert into empUSA(ID,Name) VALUES(3,'Cart Thomas');
insert into empUSA(ID,Name) VALUES(4,'Gates Bill');
– 增加Column
Alter table empCN ADD COLUMN(scoreint);
Alter table empUSA ADD COLUMN(scoreint);
UPDATE empcnset score=20 whereID=1;
UPDATE empcnset score=60 whereID=2;
UPDATE empcnset score=80 whereID=3;
UPDATE empcnset score=90 whereID=4;
UPDATE empusaset score=20 whereID=1;
UPDATE empusaset score=45 whereID=2;
UPDATE empusaset score=29 whereID=3;
UPDATE empusaset score=68 whereID=4;
二、操作语句
– 区分UNION 与 UNIONALL
– union 消除重复数据
SELECT* FROM empCN
UNION
SELECT* FROM empusa;
– 重复数据同样显示
SELECT* FROM empCN
UNIONALL
SELECT* FROM empusa;
– 数据求和 必须为UNIONALL后的数据加 表别名alisa
SELECTid,name,sum(score) FROM
(SELECT* FROM empCN
UNIONALL
SELECT* FROM empusa) a
group byid,name;