从 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
用于覆盖缺少收件人的行。
我想合并以下两个查询。记录将始终存在于用户 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
用于覆盖缺少收件人的行。