Sql 如何在db2中只更新匹配的列

Sql 如何在db2中只更新匹配的列,sql,database,db2,sql-update,Sql,Database,Db2,Sql Update,我正在尝试执行如下更新查询: 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会自动更新整个列,而不是只更新与“where”语句匹配的数据 如何使其仅更新所需的数据?一种方法是将逻辑放在中,其中: update s

我正在尝试执行如下更新查询:

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会自动更新整个列,而不是只更新与“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 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 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
)
你能做到

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
)

是的,成功了,谢谢!我会尽快核实是否有必要将“和tA.ACADEMIC_Semmer='WS11'”加入子选择;)是的,成功了,谢谢!我会尽快核实是否有必要将“和tA.ACADEMIC_Semmer='WS11'”加入子选择;)