分分钟搞懂union与union all
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 table if exists empCN; create table empCN (ID INT,Name VARCHAR(20)); drop table if 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(score int); Alter table empUSA ADD COLUMN(score int); UPDATE empcn set score=20 where ID=1; UPDATE empcn set score=60 where ID=2; UPDATE empcn set score=80 where ID=3; UPDATE empcn set score=90 where ID=4; UPDATE empusa set score=20 where ID=1; UPDATE empusa set score=45 where ID=2; UPDATE empusa set score=29 where ID=3; UPDATE empusa set score=68 where ID=4;
二、操作语句
-- 区分UNION 与 UNION ALL -- union 消除重复数据 SELECT * FROM empCN UNION SELECT * FROM empusa; -- 重复数据同样显示 SELECT * FROM empCN UNION ALL SELECT * FROM empusa; -- 数据求和 必须为UNION ALL后的数据加 表别名alisa SELECT id,name,sum(score) FROM (SELECT * FROM empCN UNION ALL SELECT * FROM empusa) a group by id,name;
三、结果分析
本文版权归作者所有,转载请注明出处http://www.cnblogs.com/iloverain/.未经作者同意必须保留此段声明,否则保留追究法律责任的权利.