2012-01-06 248 views
1

考慮這兩個表:如何在另一個表更新,根據記錄的表

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行。

我該怎麼做?

感謝

回答

4
update tbl1 
set Month = 3 
where exists 
    (select * 
    from tbl2 
    where tbl1.Qsno = tbl2.Qsno and 
     tbl1.City = tbl2.City) 
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 

,不使用保留字,如MonthYearStatus等爲表和列的名字因此你會避免很多頭痛。

相關問題