如何从用户删除所有数据但排除某些数据

时间:2018-12-02 16:33:41

标签: mysql

我有两种不同类型的用户,他们可以具有相同的用户ID。我只想从“媒体”和“通知”表中的用户类型A中删除数据。因此,我使用WHERE函数。这很好,因为我只删除了A型用户。但是,当“媒体”和/或“通知”表中不存在这些用户时,不会删除其他表中的所有数据,因为它们不符合WHERE要求。

所以我的问题是:如何删除与WHERE要求匹配的用户的所有数据,如果“媒体”和“通知”表中不存在这些数据,则仍从其他表中删除所有数据。

这是我现在使用的查询:

DELETE `cards`, `users`,`media`,`notifications`
FROM `users`
LEFT JOIN `cards` ON `cards`.`user_id` = `users`.`id`
LEFT JOIN `media` ON `media`.`model_id` = `users`.`id`
LEFT JOIN `notifications` ON `notifications`.`notifiable_id` = `users`.`id`
WHERE `users`.`id` = 88 AND `media`.`model_type` LIKE '%User%' AND `notifications`.`type` LIKE '%Workseeker%'

欢迎所有帮助! :)

1 个答案:

答案 0 :(得分:0)

我想这就是你想要的:

DELETE `cards`, `users`,`media`,`notifications`
FROM `users`
LEFT JOIN `cards` ON `cards`.`user_id` = `users`.`id`
LEFT JOIN `media` ON `media`.`model_id` = `users`.`id`
LEFT JOIN `notifications` ON `notifications`.`notifiable_id` = `users`.`id`
WHERE `users`.`id` = 88 AND (`media`.`model_type` LIKE '%User%' OR `media`.`model_type` IS NULL) AND (`notifications`.`type` LIKE '%Workseeker%' OR `notifications`.`type` IS NULL)