2011-09-23 43 views
0

比如我的數據庫結構,主鍵刪除值olddb & newdb如何在MySQL根據其它表

newdb

ID email   Name 
----------------------- 
1 [email protected] John 
2 [email protected] Peter 

olddb

ID email   
------------------- 
1 [email protected] 
2 [email protected] 
3 [email protected] 
4 [email protected] 

現在我想比較olddbnewdb並刪除米olddb的電子郵件沒有電子郵件中newdb

讓我知道

DELETE FROM olddb, newdb 
USING olddb 
    INNER JOIN newdb USING(email) 
WHERE olddb.email <> newdb.email 

回答

0

這會給你的所有電子郵件的列表,從oldtbl這是不是newtbl

SELECT * 
FROM oldtbl 
WHERE id NOT IN (
    SELECT id FROM newtbl 
) 

注:oldtblnewtbl,因爲我發現你的命名方案混亂。我們正在談論,而不是數據庫

要刪除oldtbl上的那些行,只需將SELECT *更改爲DELETE即可。

1

DELETE FROM OLDB WHERE olddb.email NOT IN(SELECT的電子郵件NEWDB);

可能還有其他方法可以做到這一點,但那會奏效。