2017-01-19 1 views
0

나는 다음과 같다 업데이트 쿼리 할 노력하고있어에 열을 일치 업데이트하는 방법 :에만 DB2

update semester_workload tA 
set tA.working = (SELECT DEPUTAT_WS11 from TD_DOZENTEN t1 where t1.Pruefernummer = tA.ID_Lecturer AND tA.ACADEMIC_SEMESTER = 'WS11') 

하지만 DB2는 자동으로 일치하는 데이터 만 대신 전체 열을 업데이트하는 "경우"를 성명서.

원하는 데이터 만 업데이트하려면 어떻게해야합니까?

답변

2

한 가지 방법은 where에 논리를 넣어하는 것입니다

update semester_workload tA 
    set tA.working = (select DEPUTAT_WS11 
         from TD_DOZENTEN t1 
         where t1.Pruefernummer = tA.ID_Lecturer AND tA.ACADEMIC_SEMESTER = 'WS11') 
    where exists (select 1 
        from TD_DOZENTEN t1 
        where t1.Pruefernummer = tA.ID_Lecturer AND tA.ACADEMIC_SEMESTER = 'WS11' 
       ); 

나는 DB2는 UPDATE에서 하나 JOIN 또는 FROM을 지원하는지 생각하지 않습니다.

+0

네를 할 수있는, 감사합니다! – dari1495

+0

이 "AND tA.ACADEMIC_SEMESTER = 'WS11'"을 (subselect에) 가질 필요가 없다는 것을 확인하는 즉시 확인하겠습니다. – Esperento57

0

당신은 일이

UPDATE semester_workload t0 
SET t0.working = 
(
    SELECT t1.DEPUTAT_WS11 FROM TD_DOZENTEN t1 
    WHERE t1.Pruefernummer = t0.ID_Lecturer 
) 
where t0.ACADEMIC_SEMESTER = 'WS11' and exists 
(
    SELECT * FROM TD_DOZENTEN t1 
    WHERE t1.Pruefernummer = t0.ID_Lecturer 
)