【发布时间】:2017-02-17 13:02:50
【问题描述】:
对于学校,我有以下任务将数据更新到数据库中:
给所有员工(位于employee表中) 谁在员工“50”(员工代码)工作的项目中工作以及加薪 250 欧元
我知道我必须在 employee 中获得SAL 列,然后将其提高 250 欧元。我目前通过以下查询做到了这一点。
UPDATE `work` AS work
INNER JOIN `employee` AS employee ON employee.`CODE` = work.`W_CODE`
SET employee.`SAL` = (employee.`SAL` + 250)
WHERE work.`P_CODE` IN ( # .... );
P_CODE 列代表项目标识符。在work 表中,列出了所有员工他们正在从事的当前项目。
为了获取代码 50 的 employee 所从事的项目,我进行了以下子查询:
UPDATE `work` AS work
INNER JOIN `employee` AS employee ON employee.`CODE` = work.`W_CODE`
SET employee.`SAL` = (employee.`SAL` + 250)
WHERE work.`P_CODE` IN (SELECT work.`P_CODE`
FROM `work` AS work
INNER JOIN `employee` AS employee ON `employee`.`CODE` = work.`W_CODE`
WHERE employee.`CODE` = "50");
运行此查询时,我收到此错误:
错误代码:1093。表“工作”被指定了两次,既作为“更新”的目标,又作为数据的单独源
为了我自己的尝试,我做了一些研究,发现我不能为此使用同一张表两次。
问题
我怎样才能修复这个查询,子查询可以工作?可以在我第一次加入时合并吗?
【问题讨论】:
标签: mysql subquery inner-join