如果成员不再属于组,则从数据库中删除行

时间:2019-04-08 17:03:36

标签: php mysql mysqli sql-delete

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

$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();

我有以下代码将新成员插入我的成员列表。

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原始查询中的组的一部分,如果不再存在,则用该{{1 }}来自id?在下面的示例中,我想从成员列表中删除Arnold,因为他不再在成员的group_id 1中。

memberlist

1 个答案:

答案 0 :(得分:2)

您可以在每次被删除时进行如下查询:

DELETE ml FROM memeberlist ml
LEFT JOIN members m ON m.id = ml.id
WHERE m.id IS NULL