一、需求是:同一张表,把name值赋值给NickName
【user1 表】
id | name | NickName |
1 | 小明 | |
2 | 小米 | |
3 | 小雷 | |
4 | 小东 | |
5 | 小妞 |
执行代码
update user1 set NickName=name
id | name | NickName |
1 | 小明 | 小明 |
2 | 小米 | 小米 |
3 | 小雷 | 小雷 |
4 | 小东 | 小东 |
5 | 小妞 | 小妞 |
二、需求是:2张表,把user1表中的name值赋值给user2表中的name
【user2 表】
id | name | NickName |
1 | 未知 | 未知 |
2 | 未知 | 未知 |
3 | 未知 | 未知 |
4 | 未知 | 未知 |
5 | 未知 | 未知 |
执行代码
update user2 set name=user1.name from user1,user2
where user1.id=user1.id
id | name | NickName |
1 | 小明 | 未知 |
2 | 小米 | 未知 |
3 | 小雷 | 未知 |
4 | 小东 | 未知 |
5 | 小妞 | 未知 |
参考文章地址:
有两个表:SPEC1、tmpDOT
SPEC1种一列为:HIGH
tmpDOT共有两个:OLD、NEW
两个表的内容大概如下:
SPEC1:
... HIGH ...
... A ...
... B ...
... A ...
... C ...
... B ...
... D ...
tmpDOT:
OLD NEW
A newA
B newB
C newC
方法一
update a set HIGH=b.NEW from SPEC1 a,tmpDOT b
where a.high=b.old
方法二
UPDATE A
SET HIGH=B.NEW
FROM A LEFT JOIN B ON (A.HIGH=B.OLD)
方法三
update a
set high = (select new from tmpdot where old=a.high )
from spec1 a