mysql如何计算两个表的值,插入另外一张表中

追着太阳晒 发布于 2017/02/10 10:35
阅读 220
收藏 1

我希望通过计算table1和table2的列的最大值,插入到另外一张table3中,具体如下:
1. 原始表:
table1 (A,B,C,D)

table1
A B C D
A01 B01 1 3
A01 B01 2 4
A02 B02 3 1
A02 B02 2 3
A03 B03 1 3

table2(A,B,E,F)

table2
A B E F
A01 B01 1 3
A01 B01 6 4
A02 B02 3 8
A02 B02 2 3
A03 B03 6 9

 

2. 目标表:
table3(A,B,G,H,I,J)

table3
A B G H I J
A01 B01 2 4 6 4
A02 B02 3 3 3 8
A03 B03 1 3 6 9

3. 说明:
G=max(C)
H=max(D)
I=max(E)
J=max(F)
计算max的时候按照A ,B来group。另外,三张表都有A,B
请大家帮忙看看,如何通过sql语句或者存储过程来实现啊,谢谢!

加载中
0
风翔飞
风翔飞

insert into table3 

select a.A,a.B,max(C),max(D),max(E),max(F) from table1 a,table2 b

where a.A=b.A and a.B=b.B group by a.A,a.B

风翔飞
风翔飞
回复 @追着太阳晒 : sql不复杂,或者你可以根据业务对数据的时间做下限制,只对最近的数据进行查询
追着太阳晒
追着太阳晒
回复 @风翔飞 : 我这个是实时任务,这样联合查询100W x 100W,效率上不去啊,那个sql可有优化空间啊?
风翔飞
风翔飞
回复 @追着太阳晒 : 用存储过程不如用代码写更方便吧,存储过程只是减少数据库连接,而且这个逻辑用代码聚合比存储过程更容易 走定时任务的话用sql就行,毕竟长时间只运行一次,对业务影响不大
追着太阳晒
追着太阳晒
回复 @风翔飞 : 如果不使用联合查询,是否可以通过存储过程来实现这一功能,通过遍历A,B查询的结果来做判断,插入C中,这样该如何实现呢?
追着太阳晒
追着太阳晒
回复 @风翔飞 : 两张表数据量在100W左右。会频繁的查询计算结果,所以我才想通过后台定时去查询计算结果insert到另一张表中
下一页
0
刘努利
刘努利

数据库不太懂,但是感觉实现起来应该不难吧。。。。

在c列以关键字A01排序,取最大。。。以此类推行不行?

http://blog.csdn.net/qq_25551295/article/details/47951197

百度到的,希望有帮助

追着太阳晒
追着太阳晒
谢谢!
0
追着太阳晒
追着太阳晒

引用来自“风翔飞”的评论

insert into table3 

select a.A,a.B,max(C),max(D),max(E),max(F) from table1 a,table2 b

where a.A=b.A and a.B=b.B group by a.A,a.B

这个方法可行,感谢指导,谢谢!

返回顶部
顶部