Mysql 使用另一个表的条件更新时发生SQL Update查询错误
我有3个具有以下架构的表: 任命增值税医生、日期、时间戳、描述、增值税客户 VAT_医生:FK医生 增值税客户:FKclient 员工增值税、姓名、出生日期、街道、城市、邮政编码、IBAN、工资 博士、专业、传记、电子邮件增值税:FKemployee 我想做一个SQL更新查询,更改所有医生的工资医生是2019年有1次以上预约的专业化员工。新的工资应该比旧的工资增加5% 我已经用多种方法尝试过了,但总是会出现错误,比如操作数应该包含1列Mysql 使用另一个表的条件更新时发生SQL Update查询错误,mysql,sql,where-clause,Mysql,Sql,Where Clause,我有3个具有以下架构的表: 任命增值税医生、日期、时间戳、描述、增值税客户 VAT_医生:FK医生 增值税客户:FKclient 员工增值税、姓名、出生日期、街道、城市、邮政编码、IBAN、工资 博士、专业、传记、电子邮件增值税:FKemployee 我想做一个SQL更新查询,更改所有医生的工资医生是2019年有1次以上预约的专业化员工。新的工资应该比旧的工资增加5% 我已经用多种方法尝试过了,但总是会出现错误,比如操作数应该包含1列 UPDATE employee SET salary =
UPDATE employee
SET salary = salary*1.05
where VAT in (
SELECT a.VAT_doctor, COUNT(a.VAT_doctor) AS count, e.VAT, e.salary
FROM appointment a
LEFT JOIN employee e on e.VAT = a.VAT_doctor
WHERE (EXTRACT(year from a.date_timestamp) IN ('2019'))
GROUP BY a.VAT_doctor
HAVING count > 1
);
如果我理解正确,您可以在更新中使用join来执行您想要的操作:
update employee e join
(select a.vat_doctor
from appointment a
where a.date_timestamp >= '2019-01-01' and
a.date_timestamp < '2020-01-01'
group by a.vat_doctor
having count(*) >= 2 -- more than one appointment
) a
on a.vat_doctor = e.vat
set salary = salary * 1.05;
我认为不需要医生表,除非预约可以将vat_医生引用为非医生。参见: