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

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

欢迎所有帮助! :)

最佳答案

我想这就是你想要的:

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)

关于mysql - 如何删除用户的所有数据但排除某些数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53582316/

相关文章:

php - 使用 php 表单和 mysql 增加按钮点击次数

mysql - 带有 MySQL 的 Entity Framework 6 - 类库

php - 页面加载错误codeigniter

php - 为什么我的查询只返回一行?

php - 配置 Azure 云服务上的 Wordpress 以通过 SSL 连接到 Azure MySQL

php - 如何仅使用 SQL 而不使用 PHP 对唯一数据进行排序(分组)?

mysql - AWS Aurora Serverless - 通信链路故障

php - (穷人的)产品推荐执行

java - com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException : Unknown column 'email' in 'where clause'

mysql - 无法计算所需的结果