2012-11-29 70 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表中的所有記錄。

相關問題