gpt4 book ai didi

MYSQL - 更新表中的每一行以在其他表上设置具有其他特定值的列

转载 作者:行者123 更新时间:2023-11-29 21:39:53 24 4
gpt4 key购买 nike

我有 2 个这样的表:

表A
国际消费电子展|注册|年 |公司|国家开放大学
---------------------------------------
C1 | |美国 | 2015 | 2015 0     | 0
C2 | |英国     | 2014 年 | 0     | 0
C3 | | BR     | 2015 | 2015 0     | 0
C1 | | RU     | 2016 | 2016 0     | 0
C1 | |美国 | 2016 | 2016 0     | 0

表B
国际消费电子展 |注册|年 |值(value) | DIS(%)
------------------------------------------------------
C1 | |美国 | 2015 | 2015 100|| 10
C1 | |美国 | 2015 | 2015 200|  | 20
C1 | | RU     | 2016 | 2016 200|  | 10
C1 | |美国 | 2016 | 2016 500|  | 20
C2 | |英国     | 2014 | 2014 200|  | 20
C2 | |英国     | 2014 | 2014 500|  | 10
C3 | | BR     | 2015 | 2015 1000 | 1000 30
C3 | | BR     | 2015 | 2015 500|  | 10
C3 | | BR     | 2015 | 2015 200|  | 20

我想从表 B 更新表 A,其中年份 = 2015 年,如下所示:
国际消费电子展|注册|年 |公司 |国家开放大学
---------------------------------------
C1 | |美国 | 2015 | 2015 250 | 250 0
C2 | |英国     | 2014 年 | 0       | 0
C3 | | BR     | 2015 | 2015 1310 | 1310 0
C1 | | RU     | 2016 | 2016 0       | 0
C1 | |美国 | 2016 | 2016 0       | 0

*) 注意:
TABLE_A.INC = SUM(TABLE_B.VAL * TABLE_B.DIS/100)表 A 从表 B 更新,其中 CES、REG 和 YEAR 相同

对于 C1,美国,2015 年:
表 B 第 1 行 + 第 2 行 = (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

最佳答案

尝试以下:

UPDATE TABLE_A A, TABLE_B B
SET INC = (B.`VAL` * B.`DIS` / 100)
WHERE A.`CES` = B.`CES`
AND A.`REG` = B.`REG`
AND A.`YEAR` = B.`YEAR`
;

SQL fiddle :http://sqlfiddle.com/#!9/55519

关于MYSQL - 更新表中的每一行以在其他表上设置具有其他特定值的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34625659/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com