首页 > 解决方案 > SQL oracle - 根据多重条件更新一列

问题描述

我想根据多个条件更新记录。我的更新忽略了条件(并更新了 doctype = 7 的所有记录)。

UPDATE DOCUMENTS SET DOCTYPE = '2'
Where DOCTYPE IN (Select C.DOCTYPE
From
    CLIENTS A,
    AGREEMENTS B,
    DOCUMENTS C
where
    A.ID = B.CUSTOMERID
    and B.ID = C.AGREEMENTID
    and C.STATUS = 1
    and B.STATUS = 1
    and A.STATUS = 1
    and C.DOCTYPE = '7')

但是选择本身会返回我想要的。我在更新中做错了什么?

标签: sqloraclesql-update

解决方案


您需要根据 Documents.ID 进行过滤,尝试如下:

UPDATE DOCUMENTS SET DOCTYPE = '2'
Where ID IN (Select C.ID
From
    CLIENTS A,
    AGREEMENTS B,
    DOCUMENTS C
where
    A.ID = B.CUSTOMERID
    and B.ID = C.AGREEMENTID
    and C.STATUS = 1
    and B.STATUS = 1
    and A.STATUS = 1
    and C.DOCTYPE = '7')

推荐阅读