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

sdnqo3pr  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(378)

我有两种不同类型的用户,它们可以具有相同的用户id。我只想从“media”和“notifications”表中的用户类型a中删除数据。因此我使用where函数。这很好,因为我只删除a型用户。但是,当这些用户不存在于“media”和/或“notifications”表中时,其他表中的所有数据都不会被删除,因为它们与where要求不匹配。
因此,我的问题是:如何删除符合where要求的用户的所有数据?如果“media”和“notifications”表中不存在这些数据,如何删除其他表中的所有数据。
下面是我现在使用的查询:

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%'

欢迎大家帮忙!:)

56lgkhnf

56lgkhnf1#

我想这就是你想要的:

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)

相关问题