从 mysql 中的多个表中删除

Deleting from multiple tables in mysql

我想合并以下两个查询。记录将始终存在于用户 table 和 active_kpi table 中,但它们可能不存在于收件人 table 中。即使记录不在收件人 table 中,我仍然希望查询从其他两个 table 中删除记录。

    $sql = "DELETE u, ak FROM users u JOIN active_kpi ak ON ak.group_id = 
    u.group_id WHERE u.group_id = ?";
    $stmt = $this->db->prepare($sql);
    $stmt->execute([$group_id]);

    $sql = "DELETE FROM recipients WHERE group_id = ?";
    $stmt = $this->db->prepare($sql);
    $stmt->execute([$group_id]);

试试这个:

DELETE u,ak,r
FROM users u INNER JOIN active_kpi ak ON ak.group_id = u.group_id 
    LEFT JOIN recipients r ON ak.group_id = r.group_id
WHERE u.group_id = ?

请注意,left join 用于覆盖缺少收件人的行。