表A
UserID | UserName |
1 | a |
2 | b |
3 | c |
4 | d |
UserID | UserName | UserPassWord |
1 | 111 | |
2 | 111 |
把表A中的UserName更新到表B中,执行以下SQL
UPDATE
B
SET UserName = A.UserName
FROM A
INNER JOIN A
ON A.UserID = B.UserID
SET UserName = A.UserName
FROM A
INNER JOIN A
ON A.UserID = B.UserID
该语句用直观理解比较难懂。如果拆分以下两步,则思路就清晰了。
第一步,筛选合并表
以被更新的表B为主,根据查询条件生成新表C
查询条件:A.UserID=B.UserID
表C
UserID | B.UserName | B.UserName | A.UserPassWord |
1 | a | 111 | |
2 | b | 111 |
第二步,根据表C和set表达式,循环更新字段
相当于
for
(i
=
0
,C.Rows.Count,i
++
)
... {
C.Rows[i][B.UserName]=C.Rows[i][A.UserName];
}
... {
C.Rows[i][B.UserName]=C.Rows[i][A.UserName];
}
任何Update语句都可以拆分成这两个步骤。