MySQL中如何在关联表中查询出其中一个外键不存在的数据?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL中如何在关联表中查询出其中一个外键不存在的数据?相关的知识,希望对你有一定的参考价值。

比如我有a,b,ab三张表,a表和b表是多对多的关系,于是有一张ab表,如果我在a表中删除了一些数据,那么ab表中的数据要怎么处理?

参考技术A 你这个ab是冗余存贮了。
既然a表删除了记录,那么就应该同时删除ab表中对应的记录,来保持数据的一致性。追问

恩,我知道要删除ab表中对应的记录。我是想请问下,它会自动删除,还是需要手动?
手动的话怎么写sql语句呢?

追答

方案1:写触发器

方案2:手动删

DELETE FROM AB
WHERE aid NOT IN (
    SELECT id
    FROM A
    )

本回答被提问者和网友采纳

关系数据库(H2,Java):如何限制外键不匹配同一张表中的另一个外键?

【中文标题】关系数据库(H2,Java):如何限制外键不匹配同一张表中的另一个外键?【英文标题】:Relational Database (H2, Java): How do I constrain a foreign key to NOT match another foreign key in the same table? 【发布时间】:2010-03-11 08:21:31 【问题描述】:

简单的问题。只是想知道这是否可以在我不必在我的 Java 代码中手动强制执行此约束的情况下完成。这两个外键(在同一个表中)都指向另一个表,但对于每一行,它们不能指向同一个外键。

link text

【问题讨论】:

【参考方案1】:

您可以使用检查约束来强制两列具有不同的值:

ALTER TABLE TableName 
    ADD CONSTRAINT ConstraintName
    CHECK fk1 <> fk2

【讨论】:

以上是关于MySQL中如何在关联表中查询出其中一个外键不存在的数据?的主要内容,如果未能解决你的问题,请参考以下文章

sql 关联查询外键为空的情况

Navicat for MySQL 中我设置了外键之后,外键却可以和主键不一样,两张图里面的产品型号和库房是又关联的

如何从具有多个关联的两个 MySQL 表中检索数据

mysql 设置外键,能否将表中多个字段关联到另一个表中的同一字段

mysql外键

主键和外键的作用