sql – 如何使用Oracle中的内部联接进行更新
发布时间:2020-12-12 07:01:52 所属栏目:MsSql教程 来源:网络整理
导读:有人可以验证内部联接是否对PL SQL中的UPDATE语句有效? 例如 Update table tset t.value='value'from tableb b inner joinon t.id=b.idinner join tablec c onc.id=b.idinner join tabled d ond.id=c.idwhere d.key=1 解决方法 此synthax在Oracle SQL中不起
有人可以验证内部联接是否对PL SQL中的UPDATE语句有效?
例如 Update table t set t.value='value' from tableb b inner join on t.id=b.id inner join tablec c on c.id=b.id inner join tabled d on d.id=c.id where d.key=1 解决方法此synthax在Oracle SQL中不起作用.在Oracle中,如果表是“密钥保留的”,有时可以更新连接,即: UPDATE (SELECT a.val_a,b.val_b FROM table a JOIN table b ON a.b_pk = b.b_pk) SET val_a = val_b 假设b_pk是b的主键,这里的连接是可更新的,因为对于A的每一行,B中最多有一行,因此更新是确定性的. 在您的情况下,由于更新的值不依赖于另一个表,您可以使用具有EXIST条件的简单更新,如下所示: UPDATE mytable t SET t.VALUE = 'value' WHERE EXISTS (SELECT NULL FROM tableb b INNER JOIN tablec c ON c.id = b.id INNER JOIN tabled d ON d.id = c.id WHERE t.id = b.id AND d.key = 1) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |