已售出到该州的单位总数的州名单

时间:2016-02-12 03:43:03

标签: sql oracle sql-delete delete-row

我还是SQL新手,必须完成手头的任务。任务是: A"假的"用户订了几个订单。删除用户帐户及其所有订单。 这意味着从3个表中删除: 订单详情 命令 客户

ORDERDETAIL和ORDERS的FK为ORDERID,ORDERS和CUSTOMERS共享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 个答案:

答案 0 :(得分:1)

您想使用子查询来查找要在子表中删除的orderid

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

然后您就可以删除相应的订单:

delete from orders
 where customerid = '12341';

如果您的表设置为cascading delete,您只需执行第二个删除语句(无需先执行第一个语句)。