将PLSQL select语句转换为更新

将PLSQL select语句转换为更新,plsql,Plsql,伙计们,我有这样的问题 我知道如何编写一个好的select语句,但不知道如何将其转换为相应的更新 我还在学习plsql 这是我的选择 select * --count(*) from POLISY_OT ot join polisy p on p.poli_id = ot.ot_poli_id join sou.rai_skl rs on rs.ot_id = ot.ot_id where ot_under_promil = 0 and ot_skladka_rok <&g

伙计们,我有这样的问题

我知道如何编写一个好的select语句,但不知道如何将其转换为相应的更新

我还在学习plsql

这是我的选择

select * --count(*) 
from POLISY_OT ot
  join polisy p on p.poli_id = ot.ot_poli_id
  join sou.rai_skl rs on rs.ot_id = ot.ot_id
where ot_under_promil = 0 
  and ot_skladka_rok <> ot_skladka_netto_rok 
  and ot_rodzaj_um = 'OP' 
  and ot_rodzaj = 'D'
  and ot_produkt_id = 17
  and p.poli_status in ('AK', 'CZ')
  and rs.skl_roczna = ot.ot_skladka_rok;
现在我想用一个更新来结束它,并创建类似这样的东西

update (
  select * --count(*) 
  from POLISY_OT ot
    join polisy p on p.poli_id = ot.ot_poli_id
    join sou.rai_skl rs on rs.ot_id = ot.ot_id
  where ot_under_promil = 0 
    and ot_skladka_rok <> ot_skladka_netto_rok 
    and ot_rodzaj_um = 'OP' 
    and ot_rodzaj = 'D'
    and ot_produkt_id = 17
    and p.poli_status in ('AK', 'CZ')
    and rs.skl_roczna = ot.ot_skladka_rok)
  set ot_skladka_rok = ot_skladka_netto_rok;

首先,我真的希望你不是一个要求家庭作业帮助的学生。那真让我讨厌

假设不是这样,考虑到您没有在整个过程中包含表别名,所以很难准确地判断哪些列属于哪些表

我这样理解是因为您希望根据另一个表中的值更新列,将表更新限制为与第三个表匹配的记录

所以我想你想要这样的东西:

UPDATE polisy_ot ot
   SET ot_skladka_rok =
       (SELECT ot_skladka_netto_rok
          FROM sou.rai_skl rs
         WHERE rs.ot_id = ot.ot_id
           AND rs.skl_roczna = ot.ot_skladka_rok)
 WHERE ot_under_promil = 0
   AND ot_skladka_rok <> ot_skladka_netto_rok
   AND ot_rodzaj_um = 'OP'
   AND ot_rodzaj = 'D'
   AND ot_produkt_id = 17
   AND EXISTS (SELECT NULL
          FROM polisy p
         WHERE p.poli_id = ot.ot_poli_id
           AND p.poli_status IN ('AK', 'CZ'))
祝你好运


炖肉

非常感谢。我不想占任何人的便宜,我只是想学点东西:所以这和存在就是你处理我们现在不能使用连接语句这一事实的方式,对吗?很好,很高兴这对你有用。请将我的答案标记为正确,并回答您的问题,这样我才能获得声誉。