我有两个表employees和salary,我准备查询的方式是,一旦从employees表中删除了staff,salary表中的staff salary就会自动删除。
从职员表中删除职员记录后,如何从薪资表中删除职员记录?
以下是我的sql代码:
$db->query('
DELETE employees
, salary
FROM employees
JOIN salary
WHERE employees.id = salary.staffId
AND salary.staffId = :id'
);
2条答案
按热度按时间o4hqfura1#
您必须离开join并更改where子句
db<>在这里摆弄
idfiyjo82#
已经解释了如何
delete
使用left join
.我这样回答是因为我认为您错过了使用数据库引擎内置功能的机会。以下是您对上下文的描述:
我准备查询的方式是,一旦从employees表中删除了staff,salary表中的staff薪资就会自动删除。
您正在描述雇员和工资之间的父子关系:我建议您在表中创建一个外键约束
salary
,它引用了表employee
. 您可以设置选项on delete cascade
因此,当父记录被删除时,所有相应的子记录也会自动删除(如果没有子记录,则子表不受影响)。可以将外键约束添加到现有表中,如下所示:
然后,要删除员工,您只需执行以下操作。。。
... 请放心,任何相关的记录
salary
将自动删除。