2017-01-19 2 views
0

Ich versuche, eine Update-Abfrage zu tun, die wie folgt aussieht:So aktualisieren nur Spalten in db2 passende

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') 

aber db2 aktualisiert automatisch die gesamte Spalte statt nur die Daten, die die „where“ Spiele Erklärung.

Wie kann ich es machen, nur die Daten zu aktualisieren, die ich will?

Antwort

2

Eine Methode ist die Logik in den where zu setzen:

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' 
       ); 

Ich glaube nicht, dass DB2 entweder JOIN oder FROM in einem UPDATE unterstützt.

+0

Yep tun, die funktioniert, danke! Ich werde überprüfen, sobald ich kann – dari1495

+0

nicht notwendig, um "UND tA.ACADEMIC_SEMESTER = 'WS11'" in subselect;) – Esperento57

0

Sie können es

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 
) 
Verwandte Themen