如果没有外部约束,MySQL删除行

标签 mysql sql

我有两张 table 。一个叫做 peoples,另一个叫做 addressespeoples 表对 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/

相关文章:

java - 通过 JDBC 执行长插入语句

java - Hibernate 获取行在结果集中的位置

sql - 如何在连接查询中显示映射到第二个表中同一列的两列

mysql - 如何在存储过程中创建mysql嵌套循环

php - 插入动态字段数据到mysql

mysql - 如何将 MySQL 列从 VARCHAR 更改为日期时间并同时转换数据?

mysql - 分组、计数和连续圈数

mysql - 连接 2 个有很多结果的表

mysql - 由于循环引用,如何在迁移到 google cloud sql 时禁用外键检查

c++ - 在 C++ 中获取 DECIMAL(10,2) 并显示它?