首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果成员不再是组的一部分,则从数据库中删除行

问如果成员不再是组的一部分,则从数据库中删除行
EN

Stack Overflow用户
提问于 2019-04-09 01:03:36
回答 1查看 39关注 0票数 0

我有以下查询来获取所有成员和一些信息。

代码语言:javascript
复制
$stmt = $conn->prepare("select m.`name`, m.`id`, m.`group_id`, p.`field_1`, g.`data1`, g.`data2`
                from members m 
                inner join pfields p on m.`id` = p.`id`
                inner join groups g on g.`g_id` = m.`group_id`
                where m.`group_id` = 1");
$stmt->execute();
$result = $stmt->get_result();

我使用以下代码将新成员插入到我的成员列表中。

代码语言:javascript
复制
while($row = mysqli_fetch_array($result, MYSQLI_ASSOC)) {
    //code update members
    $stmt = $conn->prepare("INSERT INTO memberlist (id, name) VALUES (?, ?)");
    $stmt->bind_param("ss", $row['id'], $row['name']);
    $stmt->execute();
}

然而,我注意到,如果一个成员不再是社区的一部分,这个名字永远不会被删除,因为我只是添加了新的名字。

使用DELETE进行删除,但是检查该成员是否仍然是来自members的原始查询中的组的一部分,如果不再是,从memberlist中删除具有该id的成员,最简单的方法是什么?在下面的例子中,我想从成员列表中删除阿诺德,因为他不再是成员中的group_id 1。

代码语言:javascript
复制
members                    memberlist
id | name   | group_id     id | name   | group_id
-----------------------    ----------------------
1  | Donald | 1            1  | Donald | 1 
13 | Jeff   | 1            13 | Jeff   | 1
25 | Arnold | 3            25 | Arnold | 1
EN

回答 1

Stack Overflow用户

发布于 2019-04-09 01:15:00

您可以在每次删除一个时执行类似如下的查询:

代码语言:javascript
复制
DELETE ml FROM memeberlist ml
LEFT JOIN members m ON m.id = ml.id
WHERE m.id IS NULL
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55578362

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档