如何根据另一个表上的主键删除MySQL中的值

时间:2011-09-23 23:11:59

标签: mysql

示例我的数据库结构olddb& newdb

newdb

ID email           Name
-----------------------
1  john@yahoo.com  John
2  peter@yahoo.com Peter

olddb

ID email           
-------------------
1  john@yahoo.com  
2  peter@yahoo.com 
3  rambo@hello.com
4  super@duper.com

现在我希望将olddbnewdb进行比较,并从olddb中删除newdb

中没有电子邮件的电子邮件

让我知道

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

2 个答案:

答案 0 :(得分:1)

DELETE FROM oldb WHERE olddb.email NOT IN(SELECT email FROM newdb);

可能有其他方法可以做到,但这样可行。

答案 1 :(得分:0)

这将为您提供oldtbl上不在newtbl的所有电子邮件的列表:

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

注意:oldtblnewtbl,因为我发现您的命名方案令人困惑。我们谈论,而不是数据库

要删除oldtbl上的这些行,只需使用SELECT *更改DELETE