SQL oracle - 根据multie条件更新一列

时间:2018-05-03 08:44:28

标签: sql oracle sql-update

我想根据多个条件更新记录。我的更新忽略了条件(以及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')

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

2 个答案:

答案 0 :(得分:0)

您需要根据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')

答案 1 :(得分:0)

您还需要将目标表“DOCUMENTS”与子查询相关联。请尝试下面并检查它,希望能解决您的问题。

UPDATE DOCUMENTS S SET DOCTYPE = '2'
Where (DOCTYPE,AGREEMENTID) IN (Select C.DOCTYPE,C.AGREEMENTID
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')
and S.STATUS = 1
and S.DOCTYPE = '7'