[英]Update Statements with multiple tables
抱歉,我对 SQL 还很陌生,但我想知道是否可以在 Update 语句中连接两个表,同时从第三个表中获取要实际更新的列。 例如,假设我有一个简单的“emp”表( emp_unid 、first_name、last_name、mgr_unid)、一个“dept”表( dept_unid 、dept_name)和第三个“链接”表( link_id 、emp_unid、dept_unid)。
公司决定将所有姓氏为“Ferguson”或“Malone”的员工从Exports部门转移到Imports部门,因此我们需要使用“emp”中的emp_unids更新“link”表中的相应记录,以及使用来自“dept”的相应dept_unid。
理论上,我想写一个更新语句,如下所示:
UPDATE link l, emp e
SET l.dept_unid = (SELECT dept_unid FROM dept
WHERE dept_name = 'IMPORTS')
WHERE l.emp_unid = e.emp_unid
AND e.last_name IN ('FERGUSON', 'MALONE')
我试过将 WHERE 子句翻转到 SET 子句之前,我试过使用显式连接,我试过写这个完全没有别名,但我无法完成这项工作——我一直收到“ORA -00971:缺少 SET 关键字”。 从我阅读/实验的内容来看,Oracle 似乎不喜欢在一个语句中更新多个表,但实际上,我只是尝试更新一个表,同时引用另外两个表。
我错过了一些简单的东西,还是有更聪明的方法来实现这一点?
尝试这个:
UPDATE link l
SET l.dept_unid = (SELECT dept_unid FROM dept
WHERE dept_name = 'IMPORTS')
WHERE l.emp_unid = (select e.emp_unid
from emp e
where e.last_name IN ('FERGUSON', 'MALONE'))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.