从多次存在的数据库中删除行

时间:2015-01-09 07:36:31

标签: mysql sql database

这是一个理论问题。假设您有下表:

(ID, FirstName, LastName, Street, ZIP, Country) ID是主键

然后,您可能有两个或更多同名的人居住在同一地址。因此,当您通过firstname,lastname,streetm zip和country查询它们时,您会得到几个结果。这是有道理的,因为可能发生在一个大型建筑物中,有两个同名的人居住。

如果某个人的ID在别处用作外键,您将如何从该表中删除该人?不是不可能吗?你无从谈论,两个“Steven Smith ABC Blvd. 2 1111 USA”中哪一个是你想要的......?

编辑:更清楚一点:

假设在上表中,我有两个客户名称和地址相同,因此只能在主键中删除。他们的ID在其他表中用作外键,所以我不能删除一个客户并说“对,现在我还有一个史蒂夫史密斯生活在......”,因为其他表中引用了另一个史蒂夫史密斯。

你会如何正确删除第一个史蒂夫史密斯?

1 个答案:

答案 0 :(得分:0)

如果您要删除未在另一个表中引用的 Steve Smith ,那么您在该表上left join

delete a
from addressTable a
left join secondTable s on s.fkAddressId = a.id
where s.fkAddressId is null
and a.firstName = 'Steve' and a.lastName = 'Smith'