2016-02-12 26 views
0

我對SQL還不熟悉,並且必須完成手頭的任務。任務是: 「假」用戶已下了幾個訂單。刪除用戶帳戶及其所有訂單。 這意味着從3個表刪除: 的OrderDetail 訂單 客戶已銷售給該州的單位總數的州列表

的OrderDetail和訂單都ORDERID的FK,和順序和客戶共享CUSTOMERID的FK。我開始使用這個代碼:

DELETE ORDERDETAIL.ORDERID 
FROM ORDERDETAIL 
INNER JOIN ORDERS 
ON ORDERDETAIL.ORDERID = ORDERS.ORDERID 
WHERE ORDERS.CUSTOMERID = '12341'; 

剛剛開始,但即使這失敗。

我可以使用哪些代碼刪除ORDERDETAIL和ORDERS中共享相同ORDERID的所有行以及CUSTOMER和ORDERS中的CUSTOMERID?

感謝您的幫助!

回答

1

您想使用子查詢找到你想要在一個子表刪除orderid S:

delete from orderdetail where orderid in (
    select orderid from orders 
     where customerid = '12341' 
); 

然後,你可以刪除相應的命令:

delete from orders 
where customerid = '12341'; 

如果您的表設置爲cascading delete,那麼您可以執行第2條刪除語句(不先執行第一個狀態NT)。

+0

完美!謝謝! –