分分钟搞懂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;

  三、结果分析

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏源码之家

mysql部分替换

1585
来自专栏Java成神之路

常用的Hql语句

752
来自专栏技术碎碎念

T-SQL 查询、修改数据表

T-SQL修改表数据 INSERT语句 语法: INSERT [TOP(expression) [PERCENT]] [INTO] ...

4604
来自专栏性能与架构

MySQL中索引的限制

下面列出了目前 MySQL中与索引使用相关的限制 (1)MyISAM存储引擎索引键长度的总和不能超过1000字节 (2)BLOB和TEXT类型的列只能创建前缀索...

2735
来自专栏编程心路

写给新手的Mysql入门指南(一)

关键字最好大写,这样便于阅读。可以用windows的cmd运行工具对数据库操作,前提是mysql的安装目录的子目录bin的路径添加导论系统变量PATH中,mys...

1443
来自专栏乐沙弥的世界

mysql explain type连接类型示例

811
来自专栏杨建荣的学习笔记

使用copy命令解决LONG类型的困扰(r2第24天)

在oracle的数据类型中,long类型算是一个比较另类的典型,早就不建议使用了,但是在数据字典里还是能看到long 类型的影子。 如果在一些工作中碰到long...

3226
来自专栏calmound

SQL语句知识点

PERSON表 NUMBER NAME SEX AGE 1 THERON male 19 2 JACK male 20 3 LUCY fema...

3346
来自专栏个人随笔

MySQL基本语句

创建表 如果是关键字  那么使用反引号  `` esc下面的键 create  table  [if  not  exists] 表名(    字段1  数据类...

3697
来自专栏你不就像风一样

MySQL常用SQL语句/函数/存储过程

你可以使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列。 默认情况下,它是按升序排列

872

扫码关注云+社区