【发布时间】:2020-06-19 12:02:34
【问题描述】:
抱歉,因为我对 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 似乎不喜欢在一个语句中更新多个表,但实际上,我只是尝试更新一个表,同时引用另外两个表。
是我遗漏了一些简单的东西,还是有更聪明的方法来完成这个?
【问题讨论】:
标签: sql oracle oracle11g oracle-apex