2017-06-12 135 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