MySQL - 如果任何行中不存在不同表中的值,则删除一个表中的行

时间:2012-04-23 02:55:05

标签: mysql

我想知道是否有人知道如何解决以下问题。我一直在寻找一个解决方案大约一个星期,到目前为止,没有运气。

我们有一个网站,如果他们没有任何关联用户,我们需要删除数以万计的城市。

所以基本上,如果表“users”中不存在“city id”,我们必须删除表单“cities”。假设我们需要从'cities'中删除任何行,如果在'users.city_id'列中找不到'cities.city_id',则意味着没有用户与该城市相关联。

基本上需要发生的是,对于'cities'中的每一行,MySQL需要查看users.city_id中的每一行以查看该值是否存在,如果是,则转移到下一行,如果不是它会删除城市中的行,然后移动到下一行。

我甚至不确定这样的查询是否可行......任何建议都会非常感谢!

1 个答案:

答案 0 :(得分:4)

无法访问完整的架构,以下是我的尝试。在执行任何删除操作之前备份您的数据库,万一事情变得混乱,我不想被起诉:(

DELETE FROM cities WHERE id NOT IN (SELECT city_id FROM USERS);