【发布时间】:2016-01-06 04:30:06
【问题描述】:
我有 2 个这样的表:
表 A
CES |注册 |年份 |公司 | OUC
----------------------------------------------------
C1 |美国 | | 2015 年 | 0 | 0
C2 |英国 | 2014 年 | 0 | 0
C3 | BR | 2015 年 | 0 | 0
C1 |俄罗斯 | 2016 年 | 0 | 0
C1 |美国 | | 2016 年 | 0 | 0
表 B
CES |注册 |年份 |值 | DIS(%)
------------------------------------------
C1 |美国 | | 2015 年 | 100 | 10
C1 |美国 | | 2015 年 | 200 | 20
C1 |俄罗斯 | 2016 年 | 200 | 10
C1 |美国 | | 2016 年 | 500 | 20
C2 |英国 | 2014 年 | 200 | 20
C2 |英国 | 2014 年 | 500 | 10
C3 | BR | 2015 年 | 1000 | | 30
C3 | BR | 2015 年 | 500 | 10
C3 | BR | 2015 年 | 200 | 20
我想从表 B 更新表 A,其中年份 = 2015,如下所示:
CES | |注册 |年份 |公司 | OUC
----------------------------------------------------
C1 |美国 | | 2015 年 | 250 | 0
C2 |英国 | 2014 年 | 0 0
C3 | BR | 2015 年 | 1310 | 0
C1 |俄罗斯 | 2016 年 | 0 0
C1 |美国 | | 2016 年 | 0 0
*) 注意:
TABLE_A.INC = SUM(TABLE_B.VAL * TABLE_B.DIS / 100)
表 B 的表 A 更新,其中 CES、REG 和 YEAR 相同
对于 C1,美国,2015 年:
第 1 行 + 第 2 行 表 B = (100*(100-10)/100) + (200*(100-20)/100)
对于 C3,BR,2015:
第 7 行 + 第 8 行 + 第 9 行 表 B = (1000*(100-30)/100) + (500*(100-10)/100) + (200*(100-20)/100)
可以是单个查询吗?
谢谢
================================================ =========
那好吧...
我昨天得到了答案...
UPDATE a SET inc = (SELECT SUM(val*(100-dis)/100) FROM b WHERE a.ces=b.ces AND a.reg=b.reg AND a.year=b.year) WHERE a.year = '2015'
感谢帮助:D
【问题讨论】:
-
不清楚您是如何获得更新后出现在
TABLE A中的INC值。
标签: mysql sql-update