给出了上面的数据库。
我有一名员工Good Employee
和另一名员工Excellent Employee
。 Excellent Employee
经营一个部门。
我想更新我的数据库,因此Good Employee
在由Excellent Employee
是否可以做这样的事情?
UPDATE Employee
SET Department = (
SELECT AID
FROM Department
WHERE AID = Department AND Employee.Name = 'Excellent Employee')
WHERE Name = 'Good Employee' LIMIT 1;
(上述声明不起作用)
答案 0 :(得分:0)
不确定你到底发生了什么,但这里是使用MySQL加入更新的基本语法:
UPDATE FROM EmployeeAS e
LEFT JOIN Department as dept
ON e.? = dept.?
AND e.Name = 'Good Employee'
SET e.Department = dept.AID
答案 1 :(得分:0)
这绝对是可能的。你有一个非常好的开始。正确的部分是:
Employee
Name='Good Employee'
Department
的{{1}}。从您的查询中,看起来“works_at”关系存储在AID
列下的Employee
表中。
我不知道你是如何建模“跑”关系的。我们假设运行Department
的{{1}}也必须在该部门工作。因此,我们可以找到“优秀员工”所在的部门。
要查找部门优秀作品,我们可以使用此查询:
Employee
因此,要将Good改为Excellent的部门,我们可以将其纳入更新:
Department
不幸的是,MySQL有一些怪癖,所以我们需要更改子查询来解决这个问题:
SELECT Department FROM Employee WHERE Name = 'Excellent Employee'
这是一个小提琴,展示了它的实际效果:http://sqlfiddle.com/#!2/b68bb/2