如果每个表中都存在数据,如何从少数表中删除?

时间:2013-02-18 09:02:49

标签: mysql mysqli

我有7张桌子 我需要从所有数据中删除数据,但有时我没有其中一个表中的数据,因此常规DELETE无法正常工作(返回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'

请帮忙

1 个答案:

答案 0 :(得分:2)

只需运行7个单独的删除查询,而不是一个复杂的查询 这是拇指的规则:如果你不能做一些复杂的事情 - 做到这一点很容易。简单的方法总是有效。