我想根据多个条件更新记录。我的更新忽略了条件(以及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')
但是选择本身会返回我想要的东西。我在更新时做错了什么?
答案 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'