mysql—编写一个过程或查询来删除用户及其所有相关记录

bnl4lu3b  于 2021-06-20  发布在  Mysql
关注(0)|答案(1)|浏览(290)

我有一个查询,我们有一个大的数据库和许多表,但是在数据库表中有一个很常见的问题是 rfcID . 因此,我们要删除所有的用户谁已经在过去6个月不活跃,他们只是免费的会员资格,其中定义了我们的贝宝表的会员资格和列字段,这是会员为1。
我想使用这两个行动,因为有一些记录,在我们的数据库中,会员是1,甚至用户是付费会员由于一些错误。我试着写一些脚本,但这可能会超时并挂起我的mysql服务器
我的密码是这样的

DELETE FROM `users`, `comments` 
USING `users`,`comments` 
WHERE `comments`.`rfcID` = `users`.`id` AND users.rfcID NOT IN (select rfcID from paypal);

我有30多个我都需要检查

isr3a4wc

isr3a4wc1#

在这种情况下,如果你想删除一件事以及与之相关的所有东西,而不是手动删除,你可以使用 on delete cascade 模式中的引用操作。

create table users (
    id integer primary key auto_increment
);

create table comments (
    id integer primary key auto_increment,
    user integer not null,
    foreign key(user) references users(id) on delete cascade,
    comment text not null
);

现在当你 delete from users where id = ? 与该用户关联的任何评论也将被删除。
只要确保您使用的是innodb表和 foreign_key_checks 正在打开。

mysql> show variables like 'foreign_key_checks';                                                    +--------------------+-------+
| Variable_name      | Value |
+--------------------+-------+
| foreign_key_checks | ON    |
+--------------------+-------+

mysql> select table_name, engine from information_schema.TABLES where table_name in ('users','comments');
+------------+--------+
| table_name | engine |
+------------+--------+
| comments   | InnoDB |
| users      | InnoDB |
+------------+--------+

相关问题