2016-02-12 17 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

完美!谢谢! –