簡體   English   中英

MySQL從多個表中刪除行

[英]MySQL Delete rows from multiple tables

我有2個表用戶,並且pd有一個公用列i_uid

為了從兩個表中刪除具有i_uid為1010的一行,我在php腳本中使用mysqli :: query發出了以下語句

DELETE 
FROM `users`,`pd`
WHERE `users`.`i_uid`=`pd`.`i_uid` AND `users`.`i_uid` = 1010;

有什么問題嗎?

由於您要從多個表格中刪除行,因此唯一缺少的是指定要刪除行的表格,

DELETE `users`,`pd`
FROM `users`, `pd`
WHERE `users`.`i_uid`=`pd`.`i_uid` AND `users`.`i_uid` = 1010;

在上面的查詢中,它將從兩個表中刪除行。 我建議使用ANSI聯接來更改語句,如下所示,

DELETE  a, b 
FROM    users a
        INNER JOIN pd b
            ON a.i_uid = b.i_uid
WHERE  a.i_uid = 1010

如果要從users表中刪除,

DELETE  a
FROM    users a
        INNER JOIN pd b
            ON a.i_uid = b.i_uid
WHERE  a.i_uid = 1010

使用“ Left Join並指定要在其上刪除相應行的表。

DELETE users, pd
FROM users, pd
LEFT JOIN pd
ON pd.i_uid = users.i_uid
WHERE users.i_uid = 1010

其他答案是正確的,但由於沒有人提及,我會這樣做。 您可以使用InnoDB引擎並指定外鍵和DELETE ON CASCADE 這樣,每次刪除用戶時,它都會從不同的表中刪除所有引用行。

閱讀有關外鍵的信息,並級聯刪除

為了簡單起見,我建議僅使用兩個查詢:

DELETE FROM `users` WHERE `i_uid` = 1010;
DELETE FROM `pd` WHERE `i_uid` = 1010;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM