我有这两个表:
| User |
|--------|
| u_id* |
| p_id | ← NULLABLE
| Person |
|--------|
| p_id* |
简单来说:
User
可以在没有相关人的情况下存在。
问题是:
如何在同一查询中删除用户和?#
到目前为止,我有这个:
DELETE `user`, `person`
FROM `user`
INNER JOIN `person`
WHERE `user`.`p_id` = `person`.`p_id`
AND `u_id` = 1000
对于与某个人相关的用户,它可以正常工作,但如果用户没有相关人员(p_id = NULL
),则不会删除该用户。
所以现在的问题是:
如果用户发生与某人相关,如何在同一查询中删除用户及其人员?
答案 0 :(得分:3)
使用left join
代替
DELETE `user`, `person`
FROM `user`
LEFT JOIN `person` ON `user`.`p_id` = `person`.`p_id`
WHERE `u_id` = 1000
答案 1 :(得分:2)
我会在您的外键定义中添加ON DELETE CASCADE
。然后只需删除用户,不要担心子行,因为它们将由级联删除处理。一些链接: