2012-11-29 40 views
0

我有两个包含成员数据的表 - 'members'和'member_data'。出于某种原因(我继承了这个)member_data表比members表有更多的记录。两个表都有一个member_id列,它似乎与两个表之间的用户信息相匹配。从另一个表中删除记录是因为缺少另一个表中的记录

如果在'members'表中找不到匹配的member_id,我想从'member_data'表中删除记录。有人能指引我朝着正确的方向吗?

回答

1

您可以尝试使用一个NOT IN声明:

DELETE FROM `member_data` 
WHERE `member_data`.`member_id` 
NOT IN (
    SELECT `members`.`member_id` 
    FROM `members` 
); 

无论如何,你应该纠正插入或删除不意外行的bug。

+0

像冠军一样工作,谢谢!是的,没有删除的错误需要死亡。 :) – 86Stang

+0

以这种方式管理数据库时,您可以使用'NOT IN'语句,但'IN'和'NOT IN'使用大量资源,因此您应该在应用程序中避免使用它们。很高兴,如果我能帮助:-) –

0
delete from member_data where member_id not in (select member_id from members); 

该查询将删除member_data表中不存在于members表中的所有记录。

相关问题