2013-10-17 25 views
0

我有兩個表:
SQL從A中刪除(如果存在)在乙

  • USER
  • MAILING

MAILING表具有一列email

USER表有許多usersemail

現在我想刪除這樣的事情:

DELETE email FROM mailing WHERE users.email = mailings.email 

所以我需要的,如果這個電子郵件中的用戶表中存在從表郵寄刪除電子郵件。

+0

你要刪除的行或設置電子郵件= NULL? – giammin

+0

可能的重複[SQL DELETE與JOIN另一個表的WHERE條件](http://stackoverflow.com/questions/1980738/sql-delete-with-join-another-table-for-where-condition) –

+0

我想刪除它。郵寄表不應該有電子郵件存在用戶 – Wordica

回答

2

您可以使用此

DELETE FROM mailing WHERE email IN (SELECT email FROM users) 

或使用JOIN

DELETE M 
FROM mailing M 
    JOIN users U 
    ON M.email = U.email 
+0

很好...簡單而且工作:)謝謝 – Wordica

+0

@Michael確保在兩張表中索引電子郵件... –

0

嘗試update如果要更新列

UPDATE mailing 
inner join users on users.email = mailings.email 
set email=null 

delete,或者你想刪除的記錄 試試這個:

DELETE m 
FROM mailing m 
inner join users u on u.email=m.email 
0

考慮到您要刪除郵件表中的所有行,並且郵件表中只有一列。

Delete 
from mailing where mailing.email 
exists (select email from users where users.email = mailing.email); 
0

您可以使用MySQL的EXISTS條款如下 -

delete from mailing where exists(select * from user where user.email=mailing.email); 

使用沒有需要JOIN