考虑这两个表:
tbl 1
Qsno City Status Year Month
--------------------------------------
1 01 3 1990 1
2 01 3 1990 1
1 02 3 1990 2
2 02 3 1990 2
1 03 3 1990 1
2 03 1 1990 1
3 03 1 1990 1
和:
tbl 2
Qsno City
---------------
1 01
2 01
1 03
2 03
3 03
Qsno
+ City
是唯一的
好的,我想更新tbl1
中有tbl2
行并设置Month = 3
的行。
我怎么能这样做?
感谢
答案 0 :(得分:4)
update tbl1
set Month = 3
where exists
(select *
from tbl2
where tbl1.Qsno = tbl2.Qsno and
tbl1.City = tbl2.City)
答案 1 :(得分:1)
您也可以使用此
use tempdb
go
create table #tbl1 (Qsno int,City int, intMonth int)
create table #tbl2 (Qsno int,City int)
insert into #tbl1 values (1,2,1),(1,3,1),(2,2,1),(2,3,1),(3,1,1)
insert into #tbl2 values (1,2),(2,2)
UPDATE t1
SET intMonth=3
FROM #tbl1 t1
JOIN #tbl2 t2 ON t1.Qsno=t2.Qsno AND t1.City=t2.City
SELECT * FROM #tbl1
DROP TABLE #tbl1
DROP TABLE #tbl2
不要使用Month
,Year
,Status
等保留字作为表和列的名称,这样可以避免很多麻烦。