SQL相关

aaa表
在这里插入图片描述
bbb表
在这里插入图片描述



CREATE TABLE gp20i17mp_gi.bbb (
	product varchar(255) NULL,
	reporting_dt varchar(255) NULL
)
DISTRIBUTED BY (product);

INSERT INTO gp20i17mp_gi.bbb (product,reporting_dt) VALUES 
('p1','20201231')
,('p1','20201130')
,('p2','20200831')
;

CREATE TABLE gp20i17mp_gi.aaa (
	product varchar(10) NULL,
	reporting_dt varchar(255) NULL,
	age int4 NULL,
	sale int2 NOT NULL
)
DISTRIBUTED BY (product);

INSERT INTO gp20i17mp_gi.aaa (product,reporting_dt,age,sale) VALUES 
('p1','20201231',7,7)
,('p1','20201130',6,8)
,('p1','20201231',8,6)
,('p3','20201231',10,3)
;

And 做筛选条件

select * from gp20i17mp_gi.aaa a 
left join gp20i17mp_gi.bbb b 
on a.product = b.product 

在这里插入图片描述
主表筛选

select * from gp20i17mp_gi.aaa a 
left join gp20i17mp_gi.bbb b 
on a.product = b.product 
and a.reporting_dt ='20201130'
// on a.product = b.product 如果a.product是null,null是不匹配任何值的,所以a.product=null的这个记录
// 是匹配不到b的

在这里插入图片描述
关联表筛选

select * from gp20i17mp_gi.aaa a 
left join gp20i17mp_gi.bbb b 
on a.product = b.product 
and b.reporting_dt ='20201130'

在这里插入图片描述

select * from gp20i17mp_gi.aaa a
inner join gp20i17mp_gi.bbb b
on a.product = b.product 
and a.reporting_dt = '20201231'

在这里插入图片描述

select * from gp20i17mp_gi.aaa a
inner join gp20i17mp_gi.bbb b
on a.product = b.product 
and b.reporting_dt = '20201231'

在这里插入图片描述

insert

bbb的数据
在这里插入图片描述
在这里插入图片描述

所以以下两种写法正确
在这里插入图片描述
在这里插入图片描述
以下顺序也是错的,都是先重select字段名,然后按照顺序放到gp20i17mp_gi.bbbb(reporting_dt, product )里

drop table if exists gp20i17mp_gi.bbbb;
create table gp20i17mp_gi.bbbb(reporting_dt, product )
as select product,reporting_dt from gp20i17mp_gi.aa;
select * from gp20i17mp_gi.bbbb;

在这里插入图片描述
所以可用aa的表结构放到bbbb里,然后写select *

drop table if exists gp20i17mp_gi.bbbb;
create table gp20i17mp_gi.bbbb( product,reporting_dt )
as select * from gp20i17mp_gi.aa;
select * from gp20i17mp_gi.bbbb;

在这里插入图片描述

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值