繁体   English   中英

多表更新语句

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM