create table ta ( cj nvarchar(50), dw decimal(10,2) )create table tb ( cj nvarchar(50), dw decimal(10,2) )insert into ta select '45678', 0.5 union all select '1234', 1 union all select 'qaz123', 1.5 union all select 'waz147', 2 union all select 'qsd3', 0.5 insert into tb select '45678' ,null union all select '1234' ,null union all select 'qaz123' ,null union all select 'waz147' ,null union all select 'qsd3',null union all select 'qaz12' ,null union all select '4567' ,null union all select 'qaz123' ,null union all select '123' ,null union all select '147' ,null union all select '1234' ,null union all select 'wza147' ,null union all select 'qsd3', 0.5 update b set b.dw = a.dw from tb b left join ta a on a.cj = b.cj where b.dw is null
45678 0.5
1234 1
qaz123 1.5
waz147 2
qsd3 0.5
上面的是表1中的数据cj dw
45678
1234
qaz123
waz147
qsd3
qaz12
4567
qaz123
123
147
1234
wza147
qsd3 0.5
上面是表2中的。要求就是表2和表1对比下,如果表2中cj列有数据在表1中的cj列能找到完全一样的数据,就把表2中的dw列对应位置插上表1中dw列的数据
45678 0.5
1234 1
qaz123 1.5
waz147 2
qsd3 0.5
上面的是表1中的数据 cj dw
45678
1234
qaz123
waz147
qsd3
qaz12
4567
qaz123
123
147
1234
wza147
qsd3 0.5
上面是表2中的。要求就是表2和表1对比下,如果表2中cj列有数据在表1中的cj列能找到完全一样的数据,就把表2中的dw列对应位置插上表1中dw列的数据
dw=表1.dw
from 表2,表1
where 表2.cj=表1.cj
update 表2 set dw=a.dw
from 表1 as a join 表2 as b on a.cj=b.cj
update 表2 set
dw=表1.dw
from 表2,表1
where 表2.cj=表1.cj
GO
CREATE TABLE TABLE1(cj VARCHAR(10), dw FLOAT)
INSERT TABLE1 SELECT '45678' ,0.5
INSERT TABLE1 SELECT '1234' ,1
INSERT TABLE1 SELECT 'qaz123' , 1.5
INSERT TABLE1 SELECT 'waz147' , 2
INSERT TABLE1 SELECT 'qsd3' , 0.5
IF OBJECT_ID('TABLE2')IS NOT NULL DROP TABLE TABLE2
GO
CREATE TABLE TABLE2 (cj VARCHAR(10), dw FLOAT)
INSERT TABLE2 SELECT '45678' ,NULL
INSERT TABLE2 SELECT '1234' ,NULL
INSERT TABLE2 SELECT 'qaz123' ,NULL
INSERT TABLE2 SELECT 'waz147' ,NULL
INSERT TABLE2 SELECT 'qsd3' ,NULL
INSERT TABLE2 SELECT 'qaz12' ,NULL
INSERT TABLE2 SELECT '4567' ,NULL
INSERT TABLE2 SELECT 'qaz123' ,NULL
INSERT TABLE2 SELECT '123' ,NULL
INSERT TABLE2 SELECT '147' ,NULL
INSERT TABLE2 SELECT '1234' ,NULL
INSERT TABLE2 SELECT 'wza147' ,NULL
INSERT TABLE2 SELECT 'qsd3' , 0.5
UPDATE T2 SET DW=T1.DW FROM TABLE1 T1 ,TABLE2 T2 WHERE T1.CJ=T2.CJ
SELECT * FROM TABLE2
/*cj dw
---------- -----------------------------------------------------
45678 0.5
1234 1.0
qaz123 1.5
waz147 2.0
qsd3 0.5
qaz12 NULL
4567 NULL
qaz123 1.5
123 NULL
147 NULL
1234 1.0
wza147 NULL
qsd3 0.5(影響 13 個資料列)*/
create table ta
(
cj nvarchar(50),
dw decimal(10,2)
)create table tb
(
cj nvarchar(50),
dw decimal(10,2)
)insert into ta
select '45678', 0.5 union all
select '1234', 1 union all
select 'qaz123', 1.5 union all
select 'waz147', 2 union all
select 'qsd3', 0.5 insert into tb
select '45678' ,null union all
select '1234' ,null union all
select 'qaz123' ,null union all
select 'waz147' ,null union all
select 'qsd3',null union all
select 'qaz12' ,null union all
select '4567' ,null union all
select 'qaz123' ,null union all
select '123' ,null union all
select '147' ,null union all
select '1234' ,null union all
select 'wza147' ,null union all
select 'qsd3', 0.5
update b
set b.dw = a.dw
from tb b
left join ta a on a.cj = b.cj
where b.dw is null
select * from tbdrop table ta
drop table tb
结果:
45678 0.50
1234 1.00
qaz123 1.50
waz147 2.00
qsd3 0.50
qaz12 NULL
4567 NULL
qaz123 1.50
123 NULL
147 NULL
1234 1.00
wza147 NULL
qsd3 0.50