2012-01-06 2 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 

И не использовать зарезервированные слова, такие как Month, Year, Status и т.д., как имена таблиц и столбцов, таким образом, вы избежите много головных болей.

Смежные вопросы