2017-01-19 2 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 поддерживает как JOIN или FROM в качестве UPDATE.

+0

Yep, который работал, спасибо! Я проверю, как только смогу – dari1495

+0

не нужно иметь «AND tA.ACADEMIC_SEMESTER = 'WS11» в подзабор;) – 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 
) 
Смежные вопросы