Sql 在oracle中存在与不存在
如果从下面的查询中删除exists语句,输出将如何更改。 如果删除exists,则对于条件不匹配的行,运算符ID和UPDT将设置为NULL 为什么要用额外的子查询来写这个Sql 在oracle中存在与不存在,sql,oracle,Sql,Oracle,如果从下面的查询中删除exists语句,输出将如何更改。 如果删除exists,则对于条件不匹配的行,运算符ID和UPDT将设置为NULL 为什么要用额外的子查询来写这个 UPDATE AR_CRDT C SET (OPERATOR_ID, UPDT_TS) = (SELECT AD.OPERATOR_ID, sysdate FROM AR1_CUSTOMER_CREDIT A
UPDATE AR_CRDT C
SET (OPERATOR_ID, UPDT_TS) = (SELECT AD.OPERATOR_ID, sysdate
FROM AR1_CUSTOMER_CREDIT A
WHERE A.CREDIT_ID = C.CRDT_ID
)
WHERE EXISTS (SELECT 1
FROM AR1_CUSTOMER_CREDIT A
WHERE A.CREDIT_ID = C.CRDT_ID
);
如果删除exists,则对于条件不匹配的行,运算符ID和UPDT将设置为NULL
为什么要用额外的子查询来写这个
UPDATE AR_CRDT C
SET (OPERATOR_ID, UPDT_TS) = (SELECT AD.OPERATOR_ID, sysdate
FROM AR1_CUSTOMER_CREDIT A
WHERE A.CREDIT_ID = C.CRDT_ID
)
WHERE EXISTS (SELECT 1
FROM AR1_CUSTOMER_CREDIT A
WHERE A.CREDIT_ID = C.CRDT_ID
);
EXISTS当前导致对AR_CRDT的更新仅限于AR_CRDT记录与AR1_客户_信用记录关联的记录
删除该条款意味着AR_CRDT的所有记录都将更新。有些将具有子查询的值,而有些将在AR_CRDT和AR1_CUSTOMER_CREDIT之间没有链接的情况下为空。当前存在导致AR_CRDT的更新仅限于AR_CRDT记录与AR1_CUSTOMER_CREDIT记录关联的记录
删除该条款意味着AR_CRDT的所有记录都将更新。有些子查询将具有值,而有些子查询将在AR_CRDT和AR1_CUSTOMER_CREDIT之间没有链接的情况下为空。额外的子查询可能会在那里,以便从上面复制粘贴精确的子查询。谢谢gordon。我删除了不需要的子查询。额外的子查询可以让复制粘贴上面精确的子查询变得更容易。谢谢戈登。我删除了不需要的子查询。这类似于内部连接和左外部连接之间的区别。这实际上是内部联接和外部联接之间的区别,如果您将更新重写为联接的更新,如本文所述:这类似于内部联接和左侧外部联接之间的区别。如果将更新重写为连接的更新,则实际上是内部连接和外部连接之间的区别,如下所述: