我有2個表用戶和刪除行PD具有公共列i_uid的MySQL從多個表
對於來自兩個具有1010 i_uid單行表刪除出具本人使用PHP的mysqli ::查詢下面的語句腳本
DELETE
FROM `users`,`pd`
WHERE `users`.`i_uid`=`pd`.`i_uid` AND `users`.`i_uid` = 1010;
有什麼問題嗎?
我有2個表用戶和刪除行PD具有公共列i_uid的MySQL從多個表
對於來自兩個具有1010 i_uid單行表刪除出具本人使用PHP的mysqli ::查詢下面的語句腳本
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
thanx幫助....你能解釋我的連接語法...通常我用來指定列名前的FROM .... –
這是te錶行將被刪除的源表。這是必要的,因爲你的查詢涉及多個表。 –
是不是我們在FROM之後指定那些表?那麼爲什麼在它之前呢? –
使用Left Join
,並指明相應的行會被刪除的表。
DELETE users, pd
FROM users, pd
LEFT JOIN pd
ON pd.i_uid = users.i_uid
WHERE users.i_uid = 1010
Cheers @ user2439376! – softvar
其他答案是正確的,但由於沒有人提到它,我會的。你可以使用InnoDB引擎並指定外鍵和DELETE ON CASCADE。因此,每次刪除用戶時,都會從不同表中刪除所有引用行。
閱讀上外鍵和DELETE CASCADE
爲了簡單起見,我建議只使用兩個查詢:
DELETE FROM `users` WHERE `i_uid` = 1010;
DELETE FROM `pd` WHERE `i_uid` = 1010;
是否當您嘗試它的工作? – Anigel