SQL:当子项不存在时删除父项

SQL:当子项不存在时删除父项,sql,stored-procedures,parent-child,Sql,Stored Procedures,Parent Child,我有两张桌子: 受雇人 EmployeeID (PK), Name, Age, Department TBL设计 EmployeeID(FK), Designation, DesignationID 我需要帮助编写一个存储过程,仅当指定表中没有记录时才删除员工记录。(只有在没有指定的情况下才删除employeeID) 我不确定是否应该使用ON DELETE RESTRICT约束或not EXISTS子句 你可以试试下面的方法 DELETE E FROM tblEmployee E LEFT

我有两张桌子:

受雇人

EmployeeID (PK), Name, Age, Department
TBL设计

EmployeeID(FK), Designation, DesignationID
我需要帮助编写一个存储过程,仅当指定表中没有记录时才删除员工记录。(只有在没有指定的情况下才删除employeeID)


我不确定是否应该使用ON DELETE RESTRICT约束或not EXISTS子句

你可以试试下面的方法

DELETE
E
FROM
tblEmployee E
LEFT JOIN tblDesignation D
ON E.EmployeeID = D.EmployeeID
WHERE
D.EmployeeID IS NULL

希望这有帮助

您可以使用以下代码。请解释一下语法

create procedure usp_deleteemployee
as 
begin
    delete from tblEmployee 
    where id not in (select empid from tblDesignation);
end
或者你也可以尝试使用exist。不确定语法

DELETE tblEmployee 
FROM tblEmployee 
WHERE NOT EXISTS (SELECT 1 
                  FROM tblDesignation 
                  WHERE tblEmployee.Id = tblDesignation.empid)

如果您能分享到目前为止您为获得输出所做的努力,我们将不胜感激。过程代码是高度特定于供应商的-因此请添加一个标记,以指定您是否正在使用
mysql
postgresql
sql server
oracle
db2
或其他完全不同的东西。我正在使用SQL server。谢谢,但我想用ID删除它。我不想删除所有记录。为EmployeeID创建一个参数,并仅删除我为其提供EmployeeID值的记录。