# 分分钟 搞懂 各种类型的关联

废话不多说，下面开始做个实验。

```drop table if exists data_stock1;
drop table if exists data_stock2;

-- 区分二表，通过amount取不同字段

create table data_stock1(
account varchar(20),
amount1 int(10),
init_date varchar(10)
);

create table data_stock1(
account varchar(20),
amount2 int(10),
init_date varchar(10)
);

insert into data_stock1(account,amount1,init_date) values('2001',200,'20170101');
insert into data_stock1 (account,amount1,init_date) values('2001',30,'20170102');
insert into data_stock1 (account,amount1,init_date) values('2002',210,'20170102');
insert into data_stock1 (account,amount1,init_date) values('2003',70,'20170102');
insert into data_stock1(account,amount1,init_date) values('2002',10,'20170101');```

---------------------------------------------------我是分割线-------------------------------------

-- --左关联, a.account=b.account

select *

from data_stock1 a left join data_stock2 b on (a.account=b.account);

-- --左关联,a.account=b.account and a.init_date=b.init_date select * from data_stock1 a left join data_stock2 b on (a.account=b.account and a.init_date=b.init_date);

-- --左关联,a.account=b.account,再做聚合 求平均值 select a.account,(AVG(a.amount1)+AVG(b.amount2)) as dispersion from data_stock1 a left join data_stock2 b on (a.account=b.account ) group by a.account;

-- --左关联,a.account=b.account,再做聚合 求平均值

select a.account,(AVG(a.amount1)+AVG(b.amount2)) as dispersion from data_stock1 a left join data_stock2 b on (a.account=b.account and a.init_date=b.init_date) group by a.account;

-- --右关联, a.account=b.account select * from data_stock1 a RIGHT JOIN data_stock2 b on (a.account=b.account);

-- --右关联,a.account=b.account and a.init_date=b.init_date select * from data_stock1 a RIGHT JOIN data_stock2 b on (a.account=b.account and a.init_date=b.init_date);

-- --内联, a.account=b.account --写法1 ，select * from data_stock1 a INNER JOIN data_stock2 b on a.account=b.account;

--写法2， select * from data_stock1 a , data_stock2 b where a.account=b.account;

-- --内联,a.account=b.account and a.init_date=b.init_date select * from data_stock1 a INNER JOIN data_stock2 b on (a.account=b.account and a.init_date=b.init_date);

select * from data_stock1 a ,data_stock2 b where (a.account=b.account and a.init_date=b.init_date);

-- --右关联,a.account=b.account,再做聚合 求平均值 select a.account,(AVG(a.amount1)+AVG(b.amount2)) as dispersion from data_stock1 a RIGHT JOIN data_stock2 b on (a.account=b.account ) group by a.account;

-- --右关联,a.account=b.account,再做聚合 求平均值,再做聚合 求平均值

select a.account,(AVG(a.amount1)+AVG(b.amount2)) as dispersion from data_stock1 a RIGHT JOIN data_stock2 b on (a.account=b.account and a.init_date=b.init_date) group by a.account;

0 条评论

• ### 计算累计收益

计算累计收益，fund_account, init_date, total_income  drop table if exists data_stock; c...

• ### MySQL实现全关联 full outer join

SQL LEFT JOIN 关键字 LEFT JOIN 关键字会从左表 (table_name1) 那里返回所有的行，即使在右表 (table_name2) 中...

• ### 来看看一个大二学生的Spark练习题

23. 总成绩大于150分，且数学大于等于70，且年龄大于等于19岁的学生的平均成绩是多少？

• ### 机器学习实战：8大分类器识别树叶带源码

今天我想送给大家两句话：1：在这个浮躁的社会中，每个人都想找到捷径，那么我想认真踏实地做好一件事也便是最大的捷径了。2：不要管别人做什么，有自己的目标，可能你现...

• ### mongodb 定时切割日志 lock

版权声明：本文为博主原创文章，未经博主允许不得转载。 https://blog.csdn.net/aeolus_pu/article/details/6075...

• ### HR不招收跳槽程序员惹众怒，程序员：不跳槽你们还想有饭吃？

跳槽几乎是程序员加薪的一条常见的途径，甚至都有很多程序员分享自己跳槽加薪的心得。我们几乎很难看到一个人或者程序员在一家公司干个5年以上，因为始终在一个岗位上让自...

• ### Go语言实战笔记（十六）| Go 并发示例-Pool

这篇文章演示使用有缓冲的通道实现一个资源池，这个资源池可以管理在任意多个goroutine之间共享的资源，比如网络连接、数据库连接等，我们在数据库操作的时候，比...

• ### 随开随用，六度CRM联合腾讯云推教培数字化｜腾讯SaaS加速器·学员动态

? 来源 |  腾讯SaaS加速器首期项目-六度人和 ---- 腾讯SaaS加速器 二期30席项目招募 报名方式 腾讯SaaS加速器，作为腾讯产业加速器的一个...