2017-06-12 84 views
0

我有两个表:SQL:删除父当孩子不存在

tblEmployee

EmployeeID (PK), Name, Age, Department 

tblDesignation

EmployeeID(FK), Designation, DesignationID 

我需要帮助写一个存储过程来删除雇员记录只有在指定表中没有记录的情况下。 (只有在没有指定代号的情况下才删除employeeID)

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

+1

如果共享将不胜感激你尝试过什么到目前为止让你的输出 – Prathyush

+2

程序代码是**高度特定供应商的** - 所以请添加标签到指定是你使用'mysql','postgresql','sql-server','oracle'或'db2' - 或者其他的东西。 –

+0

我正在使用SQL服务器。 – Bee

回答

0

那么你可以有你的目的下面的代码。请原谅与语法

create procedure usp_deleteemployee 
as 
begin 
    delete from tblEmployee 
    where id not in (select empid from tblDesignation); 
end 

或者你也可以尝试与存在也。不知道有关语法

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

你可以尝试下面的东西。

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

希望这有助于!

+0

谢谢,但我想用ID删除它。我不想删除所有记录。为EmployeeID创建一个参数并仅删除我为其提供EmployeeID值的记录。 – Bee