2014-10-19 2 views
0

에서 T-SQL으로 다음을 수행 할 것입니다.IF 레코드가 Table1, UPDATE Table2에 존재하지 않습니다. ELSE IF 레코드가 존재합니다. Table1의 열이있는 Table2

표 1은 임의의 일부 행으로 구성되어 있습니다. Table2는 Table1보다 많은 행으로 구성되어 있지만 존재하는 행은 동일하며 날짜를 보유하는 하나의 열을 제외합니다.

Table1의 행이 Table2에있는 경우 Table2의 날짜 열을 업데이트하려고합니다.
Table2의 행이 Table1에 없으면 Table2의 날짜 열을 업데이트하려고합니다.

이 저장 프로 시저가 매개 변수를 가져 오지 않거나 매개 변수를 출력하지 않기 때문에 필자는이 일을 실현하기 위해 구문을 이해할 수 없습니다.

+0

기록하지가 존재하는 경우에만 반환 날짜 대신에 오늘 날짜로 날짜를 설정하므로 유 같은 @Pradeep 표 2 –

+0

에 가서 업데이트됩니다 어떤 값을 다음 표 1에 존재하는 경우 표 1. – NicT

답변

1
update table1 
    set table1.date = insull(table2.date, getdate()) 
    from table1 
    left jion table2 
    on table2.ID = table1.ID 
+0

고마워요, 이것이 제가 찾고 있던 바로 그 것입니다! :) SQL 구문을 수정하기 위해 읽어야 할 사항이 있습니까? 나는 그것이 불필요하게 어렵다는 것을 안다, 나는 단지 그것 주위에 나의 머리를 감쌀 수 없다. 다시 고맙습니다. – NicT

+0

Sql Server 6.5 일 때 다시 배웠습니다. 그 이후로 나는 문서를 가지고있다. – Paparazzi

1

모두의

UPDATE A 
SET A.datecol= CASE 
        WHEN EXISTS (SELECT 1 
           FROM Table1 B 
           WHERE B.cola = A.cola) THEN c.Datecol 
        ELSE getdate() 
       END 
FROM Table2 A 
     JOIN Table1 C 
     ON a.cola = c.cola 
2

먼저 테이블의 DIFF을 얻어야한다보십시오. 다음을 확인하십시오 :

set nocount on 
declare @t1 table (id int, datecolumn datetime) 
declare @t2 table (id int, datecolumn datetime, fk_on_t1 int) 

declare @diff table(t1_id int, t2_id int) 

insert into @diff(t1_id,t2_id) 
select 
t1.Id 
,t2.ID 
from @t1 t1 
full join @t2 t2 on t1.id = t2.fk_on_t1 

이제 하나 또는 다른 테이블이있는 행을 이해할 수 있습니다. 다음과 같이 검색어를 사용하여 사례에 대한 날짜 열을 업데이트 할 수 있습니다.

update t2 
set datecolumn = getdate() 
from @t2 t2 
inner join @diff d on d.t2_id = t2.ID 
where d.t2_id is not null 

일반적으로 제 2 대신 하나의 검색어 만 만들 수 있습니다. 확인이 :

update t1 
set datecolumn = getdate() 
from @t1 t1 
full join @t2 t2 on t1.id = t2.fk_on_t1 
where t2.ID is not null 
관련 문제