gpt4 book ai didi

mysql - 如果从第一个表中删除相应的用户,则从第二个表中删除行

转载 作者:行者123 更新时间:2023-11-29 05:06:34 24 4
gpt4 key购买 nike

我正在使用以下查询从表中删除一些行(用户)

DELETE
FROM
rfs_users
WHERE
ID > 1 AND user_registered < '2017-05-16 12:09:54' AND user_login NOT IN ('username1', 'username2')

我有另一个表,我也需要从中删除一些行。此表 (rfs_usermeta) 具有不同的结构,我无法对其使用相同的查询。

rfs_users中,一行对应一个用户。在rfs_usermeta中,多行对应一个用户。我可以用

DELETE FROM rfs_usermeta WHERE user_id > 1

但这会删除几乎所有行。如果要在 rfs_users 中删除该用户,我需要在 rfs_usermeta 中删除该用户。

例如:

// loop rows in rfs_users
for (row in rfs_users) {
// target specific rows
if (row.user_id > 1 && row.user_registered < '2017-05-16 12:09:54' && !('username1', 'username2').includes(row.user_login)) {
// delete matching row
row.remove()
// also delete rows from rfs_usermeta
rfs_usermeta.getRows(row.user_id).remove()
}
}

我如何形成这个查询?

最佳答案

usermeta 是否对 users 表有外键约束?如果是这样,您可以设置引用行中发生的情况。

您可以通过将外键约束添加到 usermeta 来自动删除相应的行,如下所示:

ALTER TABLE usermeta ADD CONSTRAINT FOREIGN KEY (user_id) REFERENCES users(id) ON DELETE CASCADE;

这将删除引用已删除用户的所有 usermeta 行。

如果您不想这样做,您还可以向删除 usermeta 行的用户表添加一个触发器。

希望这有帮助;)

关于mysql - 如果从第一个表中删除相应的用户,则从第二个表中删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46706655/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com