我有两张 table 。一个叫做 peoples
,另一个叫做 addresses
。 peoples
表对 address
表有外部约束 (peoples.address_id = addresses.address_id
) 多个人可能有相同的地址。 addresses
表中的 address
列有唯一约束
我遇到过这样一种情况,我必须从 peoples
表中删除一个人以及 addresses
表上的相关地址当且仅当没有peoples
表中具有相同地址的其他记录。
我怎样才能在 MySQL 中执行此操作?
最佳答案
这应该比执行子查询更高效:
DELETE
addresses
FROM
addresses
LEFT JOIN peoples
ON addresses.address_id = peoples.address_id
WHERE
peoples.address_id IS NULL
它应该删除所有未在 peoples
中引用的地址 table 。如果您只想删除有问题的特定地址,请在 WHERE
中添加一些内容类似 AND addresses.address_id = '<address_id>'
的子句.
Example
关于如果没有外部约束,MySQL删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19944150/