2012-01-06 3 views
1

Tenir compte ces deux tables:Comment mettre à jour une table selon les enregistrements dans une autre table

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 

et:

TBL 2

Qsno  City 
--------------- 
1   01 
2   01 
1   03 
2   03 
3   03 

Qsno + City sont uniques

Ok, je veux mettre à jour la ligne de tbl1 qui a la ligne dans tbl2 et définir Month = 3.

Comment puis-je faire cela?

grâce

Répondre

4
update tbl1 
set Month = 3 
where exists 
    (select * 
    from tbl2 
    where tbl1.Qsno = tbl2.Qsno and 
     tbl1.City = tbl2.City) 
1

vous pouvez également utiliser cette

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 

Et ne pas utiliser des mots réservés tels que Month, Year, etc Status que les noms des tables et des colonnes ainsi vous éviter beaucoup de maux de tête.

Questions connexes