2013-02-18 74 views
0

我有7个表 我需要从所有的删除数据,但有时我没有数据表中的一个,定期删除不工作(返回false)如果数据存在于每个表中,如何从少数表中删除?

DELETE `lead`.*, `wp_users`.*, `wp_sfmembers`.*, `wp_usermeta`.*, 
     `crm_notes`.*,`deposits`.*,`meta_accounts`.* 
FROM `lead`, `wp_users`, `wp_sfmembers`, 
    `wp_usermeta`, `crm_notes`, 
    `deposits`, `meta_accounts` 
WHERE 
    `wp_users`.`ID`=`lead`.`uid` 
    AND `wp_sfmembers`.`user_id`=`lead`.`uid` 
    AND `wp_usermeta`.`user_id`=`lead`.`uid` 
    AND `crm_notes`.`uid`=`lead`.`id` 
    AND `deposits`.`uid`=`lead`.`id` 
    AND `meta_accounts`.`uid`=`lead`.`id` 
    AND `lead`.`id`='89' 

我试图与JOIN做但它删除我错误的数据:

DELETE `l`.* 
FROM `lead` as `l` 
    LEFT OUTER JOIN `wp_users` ON `wp_users`.`ID`=`l`.`uid` 
    LEFT OUTER JOIN `wp_sfmembers` ON `wp_sfmembers`.`user_id`=`l`.`uid` 
    LEFT OUTER JOIN `wp_usermeta` ON `wp_usermeta`.`user_id`=`l`.`uid` 
    LEFT OUTER JOIN `crm_notes` ON `crm_notes`.`uid`=`l`.`uid` 
    LEFT OUTER JOIN `deposits` ON `deposits`.`uid`=`l`.`id` 
    LEFT OUTER JOIN `meta_accounts` ON `meta_accounts`.`uid`=`l`.`id` 
    AND `l`.`id`='89' 

请帮

+0

不应该'AND l.id = 89'是'WHERE l.id = 89'? – 2013-02-18 09:17:22

回答

2

只要运行7个单独删除查询,而不是一个复杂的问题。
这就是大拇指的规则:如果你不能做一些复杂的方式 - 做简单的方法。简单的方法总是有效。

+0

通常我会同意,但删除多个表格之间的相关数据将是一个孤立完成时的痛苦。 – 2013-02-18 09:18:32

相关问题