sql-union&union all

一、com

2者都是用来把2个结果集进行上下合并的
要求2字段的数量和类型要一致。不过在hive中,类型一致的要求没那么严格

二、区别:union是去重 + 排序,union all是简单的堆叠且不排序,union all性能好

1.去重是要求select的所有字段都一样

2.排序是根据主键,如果没有主键,或者是在hive中,就根据select列表中的第一个字段正序排。一般都会手动指定

三、mod

1.数据准备

CREATE TABLE Person (
	PersonID int,
	LastName varchar(255),
	FirstName varchar(255),
	Address varchar(255),
	City varchar(255)
);

INSERT INTO Person VALUES (1, 'Tom', 'Erichsen', 'Skagen 215, Stavanger 4006', 'Norway');
INSERT INTO Person VALUES (2, 'Tom', 'Erichsen', 'Skagen 214, Stavanger 4006', 'Norway');
INSERT INTO Person VALUES (3, 'Tom', 'Erichsen', 'Skagen 213, Stavanger 4006', 'Norway');
INSERT INTO Person VALUES (4, 'Tom', 'Erichsen', 'Skagen 212, Stavanger 4006', 'Norway');
INSERT INTO Person VALUES (5, 'Tom', 'Erichsen', 'Skagen 211, Stavanger 4006', 'Norway');

2.PersonID在左边,则根据PersonID正序排

SELECT PersonID,Address FROM Person where PersonID <=2
union
SELECT PersonID,Address FROM Person where PersonID >=2
;
1|Skagen 215, Stavanger 4006
2|Skagen 214, Stavanger 4006
3|Skagen 213, Stavanger 4006
4|Skagen 212, Stavanger 4006
5|Skagen 211, Stavanger 4006

3.Address 在左边,则根据Address 正序排

SELECT Address,PersonID FROM Person where PersonID <=2
union
SELECT Address,PersonID FROM Person where PersonID >=2
;
Skagen 211, Stavanger 4006|5
Skagen 212, Stavanger 4006|4
Skagen 213, Stavanger 4006|3
Skagen 214, Stavanger 4006|2
Skagen 215, Stavanger 4006|1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值