Set one row fields as a multiplication of 2 others(将一行字段设置为 2 个其他字段的乘积)
问题描述
我有一个这样的SQL表结构
Id A B C D1 1 5 6 252 2 10 5 253 3 7 4 254 1 6 5 265 2 10 5 266 3 8 3 26我想写一个脚本,它将更新所有B &A=3 的行中的 C 列 与 A = 1 和 A = 2 相乘的值(对于相同的 D 列)
所以结果应该是
<前>身份证 A B C D1 1 5 6 252 2 10 5 253 3 50 30 254 1 6 5 265 2 10 5 266 3 60 25 26
如何在 SQL 中编写这样的代码?
一种可能的方法是将表与自身连接两次:
更新T3放T3.B = T1.B * T2.B,T3.C = T1.C * T2.C来自 [表] T3在 T1.A = 1 和 T1.D = T3.D 上加入 [表] T1在 T2.A = 2 和 T2.D = T3.D 上加入 [表] T2在哪里T3.A = 3I have a such a structure of SQL table
Id A B C D
1 1 5 6 25
2 2 10 5 25
3 3 7 4 25
4 1 6 5 26
5 2 10 5 26
6 3 8 3 26
I want to write a script, which will update all the B & C columns in the rows with A=3 with the value of multiplication of the A = 1 and A = 2 (for the same value of D column)
So the result should be
Id A B C D 1 1 5 6 25 2 2 10 5 25 3 3 50 30 25 4 1 6 5 26 5 2 10 5 26 6 3 60 25 26
How can I write such a code in SQL?
One possible way is joining table to itself twice:
update T3
set
T3.B = T1.B * T2.B,
T3.C = T1.C * T2.C
from [Table] T3
join [Table] T1 on T1.A = 1 and T1.D = T3.D
join [Table] T2 on T2.A = 2 and T2.D = T3.D
where
T3.A = 3
这篇关于将一行字段设置为 2 个其他字段的乘积的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:将一行字段设置为 2 个其他字段的乘积
基础教程推荐
- mysql选择动态行值作为列名,另一列作为值 2021-01-01
- 在 MySQL 中:如何将表名作为存储过程和/或函数参数传递? 2021-01-01
- 如何根据该 XML 中的值更新 SQL 中的 XML 2021-01-01
- MySQL 中的类型:BigInt(20) 与 Int(20) 2021-01-01
- oracle区分大小写的原因? 2021-01-01
- 表 './mysql/proc' 被标记为崩溃,应该修复 2022-01-01
- 什么是 orradiag_<user>文件夹? 2022-01-01
- 二进制文件到 SQL 数据库 Apache Camel 2021-01-01
- 在多列上分布任意行 2021-01-01
- 如何在 SQL 中将 Float 转换为 Varchar 2021-01-01
