![](/img/trans.png)
[英]How do I delete a record in a table which has a primary key referenced in another table as foreign key?
[英]Delete a row of a table that has a key linked to another table as foreign key
我剛剛開始修改mysql。 我有三張桌子。
PURCHASEORDERS
PURCHASEORDERLINE(HAS A FOREIGN KEY OF PURCHASEORDERID AND STOREROOM ID)
STOREROOM
我試圖從采購訂單中刪除一行,並意識到這將是一個問題,因為它鏈接到采購訂單行的外鍵。 現在,根據我的理解,我不得不說(用偽代碼)
delete from purchaseorders where purchaseid not exists in
purchaseorderline.purchaseid
有什么建議可以用mysql術語表達嗎?
jsut使用不在
delete from purchaseorders where purchaseid not in
( select purchaseorderline.purchaseid from purchaseorderline where
purchaseid is not null
)
您似乎想要一個not exists
子查詢:
delete from purchaseorders po
where not exists (select 1
from purchaseorderline pol
where po.purchaseid = ol.purchaseid
);
等效公式為left join
:
delete po
from purchaseorders po left join
purchaseorderline pol
on po.purchaseid = ol.purchaseid
where pol.purchaseid is null;
我強烈建議您不要將NOT IN
與子查詢一起使用。 如果子查詢中的任何值返回NULL
則它的行為不符合預期。 因為還有其他表達預期邏輯的方法,所以我的建議是習慣於使用這些其他方法來避免將來的錯誤。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.