mysql - 如何从多个表中删除重复的外键?

标签 mysql sql

我正在编写一个查询,该查询根据表 X 中的外键在一个表表 A 中查找重复结果。 表 A 的主键是其他 3 个表的外键,表 B + 表 C + 表 D

有没有办法我可以编写一个单个脚本来删除3个表(表B C D)的第一(顶部)行使用 FK,然后使用表 A(通过表 X 的 FK)。

希望这是有道理的,这很难解释!!

表A

<小时/>
Primary Key                                   Foreign Key                   IsActive

a64c3cae-8474-4c4e-8108-14898b8b5319    3b7c82d9-bbbe-4504-9dfd-e01614d12ff6    1

表B

<小时/>
Primary Key                                       Foreign Key               IsActive
998852b4-6d2a-47e0-b9c3-497548b8b5c6    a64c3cae-8474-4c4e-8108-14898b8b5319    1

表C

<小时/>
Primary Key                                 Foreign Key                     IsActive
0966f8e6-4c29-4e5a-8b59-5ac413557392    a64c3cae-8474-4c4e-8108-14898b8b5319    1

表D

<小时/>
Primary Key                                     Foreign Key                 IsActive
f8c30ff5-498f-4e34-90c5-814bc5cf46ef    a64c3cae-8474-4c4e-8108-14898b8b5319    1

表X

<小时/>
Primary Key                             Name    InTables
3b7c82d9-bbbe-4504-9dfd-e01614d12ff6    Bob         4
<小时/>

谢谢, 山姆

最佳答案

您可以在一个查询中执行它,如下所示:

DELETE A, B, C, D
FROM TableA A
LEFT JOIN TableX X ON X.PK = A.FK
INNER JOIN TableB B ON B.FK = A.PK 
INNER JOIN TableC C ON C.FK = A.PK
INNER JOIN TableD D ON D.FK = A.PK;

但是,这不是一个好的做法,因为您可以使用外键 CONSTRAINT ON DELETE CASCADE 来提高效率。它的作用只是将外键链接到链接的主键,如果删除该链接的主键,任何链接的外键也将被删除。

Review this post to know more

关于mysql - 如何从多个表中删除重复的外键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49051940/

相关文章:

php - ORDER BY 日期排序仅使用天和月mysql

sql - 使用 order by 时的动态 order by - 加速

mysql - 在mysql中选择最后一个不同的记录

mysql - 如何连接在独立容器上运行的Wordpress和MySql

php - 使用 PHP 获取 mysql 数据时出现问题

sql - SQL Server 根据条件插入和更改数据

java - 商店中购买最多的商品 SQL

php - 无法使用php向mysql插入数据

mysql - 为什么我的 if else 没有给出预期的输出? (mysql)

sql - 对于每个国家,找到人口最多的城市和该城市的人口