首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将PLSQL select语句转换为更新

将PLSQL select语句转换为更新
EN

Stack Overflow用户
提问于 2016-02-02 15:36:09
回答 1查看 55关注 0票数 0

伙计们我有这么大的麻烦。

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

我还在学习plsql

这是我的选择

代码语言:javascript
复制
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;

现在,我想用一个更新来结束它,并创建这样的东西

代码语言:javascript
复制
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;
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-02 17:04:09

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

假设情况并非如此,考虑到在整个过程中都没有包含表别名,所以很难准确地判断哪些列属于哪个表。

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

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

代码语言:javascript
复制
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'))

祝好运,

炖菜

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35157588

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档