sql - SQL Server 更新子查询的公式不太正确
问题描述
我有一个名称及其频率的表(table1)
Name-----Frequency
Mike-------0.56
Fred-------0.30
Nancy------0.14
和一个笛卡尔积(table2),其中名称在两列和第三列中配对,我想通过将前两列中的名称匹配回table1来对table1中的频率求和。
Name1-------Name2------sum
Mike--------Fred
Mike--------Nancy
Fred--------Nancy
我想使用表 1 中的频率和匹配名称的更新中的子查询来更新 table2 的 sum 列(或者这就是我想我需要这样做的方式)。如果有更好的方法请告诉我。
我有:
UPDATE table2
SET sum = (SELECT dbo.table1.Frequency WHERE Name1 = dbo.table1.Name) +
(SELECT dbo.table1.Frequency WHERE Name2 = dbo.table1.Name)
FROM table1
我得到一个充满 NULL 的表,而不是频率总和。我会以正确的方式解决这个问题吗?我是否完全错过了如何做到这一点并且有更好的方法来做到这一点?
解决方案
尝试从这样的连接更新:
update a
set a.sum=isnull(b.frequency,0)+isnull(c.frequency,0)
from table2 a
left join table1 b on a.name1=b.name
left join table1 c on a.name2=c.name
推荐阅读
- xaml - Uwp 扩展绑定错误。未能设置“路径”
- android - .buildUpon() 和 .build() 的区别?
- angular - 如何动态添加名称到输入字段?
- spring - 如何审计 Spring 数据 jpa @Query?
- spring-boot - @NotEmpty 注释的 Spring Boot 示例
- docker - Docker 撰写错误:container-linux.go: 348
- mysql - 如何在mysql中获得以下数据集的排名?
- c++ - 访问我的自定义类中的 QQmlApplicationEngine
- javascript - Json Array 在第二个 for 循环中未定义
- javascript - 如何在node.js中显示函数的总和