对SQL数据库进行特定更新

时间:2013-06-30 20:02:57

标签: mysql sql database

enter image description here

给出了上面的数据库。

我有一名员工Good Employee和另一名员工Excellent EmployeeExcellent 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;

(上述声明不起作用)

2 个答案:

答案 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