jan*_*anf 1 sql-server r sql-update sqldf
我有下表lc:
a b c d
co NA co 1
co NA co 84
us co us 6
NA co NA 54
us NA NA 4
Run Code Online (Sandbox Code Playgroud)
还有另一张桌子 ro
d value
bb 1
co 0.5
mn 0.03
us 2
Run Code Online (Sandbox Code Playgroud)
我想lc使用中的值更新其中的值ro以获取以下内容:
a b c d
0.5 NA 0.5 1
0.5 NA 0.5 84
2 0.5 2 6
NA 0.5 NA 54
2 NA NA 4
Run Code Online (Sandbox Code Playgroud)
我有代码:
lc <- sqldf(c("UPDATE lc SET a = (SELECT ro.value FROM ro WHERE lc.a = ro.d)",
"SELECT * FROM main.lc")
)
Run Code Online (Sandbox Code Playgroud)
显然,这只会更新列a,而不会更新其他列。如何更新同一条语句中的其余列?我看过解决SQL中UPDATE查询的帖子,但所有帖子都只比较一个表中的一列和另一表中的一列。
这只是一个例子,实际上我有40列要更新,lc其中包含数百万行,并且a b c值可以不同于co和us,因此我需要它非常有效。
您可以在脚本下方尝试以下操作-
SELECT B.value a,C.value b,D.value c, A.d
FROM lc A
LEFT JOIN ro B ON A.a = B.d
LEFT JOIN ro C ON A.b = C.d
LEFT JOIN ro D ON A.C = D.d
Run Code Online (Sandbox Code Playgroud)
输出是-
a b c d
0.50 NULL 0.50 1
0.50 NULL 0.50 84
2.00 0.50 2.00 6
NULL 0.50 NULL 54
2.00 NULL NULL 4
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
260 次 |
| 最近记录: |