2011-03-03 96 views
0

我有一個SQL Server 2008數據庫。這個數據庫有兩個相關的表格:Customer和Order。我的表格如下所示:刪除SQL中未加入的記錄

Customer 
-------- 
ID 
FirstName 
LastName 

Order 
----- 
ID 
CustomerID 
Amount 
ShipDate 

我需要刪除所有沒有任何訂單的客戶。我找不出最好的方法來做到這一點。有人能告訴我如何做到這一點?不是部分是讓我得到的東西。最初我使用「IN」,但它困擾着我。

謝謝你的幫助!

回答

2

而不是使用IN操作符,使用子查詢和NOTEXISTS,是這樣的:

DELETE Customers 
FROM Customers c 
WHERE NOT EXISTS (
    SELECT 1 
    FROM Orders o 
    WHERE o.CustomerID = c.ID 
) 
0
DELETE Customer 
WHERE ID IN 
(
    SELECT Customer.ID 
    FROM Customer 
    LEFT JOIN Order ON 
     Customer.ID = ORder.CustomerID 
    WHERE ORder.CustomerID IS NULL 
) 
0
Delete from Customer 
WHERE ID in 
(
    SELECT C.ID 
    FROM Customer C 
    Left Outer Join Order O ON C.ID = O.CustomerId 
    WHERE O.ID IS NULL 
)