mysql - 如何检查表中是否存在多对多对多...

标签 mysql sql select

我有 4 张表,这 4 张是一张联结表中的外键。

问题是我需要检索丢失的连接值。

例如:

Table A       Table B      Table C     Table D             
--------     ---------    ---------   ----------
  1              4            7          A
  2              5            8          B



 JUNCTION TABLE
-----------------
  1   4   7   A
  1   4   7   B
  1   4   8   A
  1   4   8   B
  1   5   7   A
  1   5   7   B
  1   5   8   A
  1   5   8   B      
  2   4   7   A
  2   4   7   B
  2   4   8   A
  2   4   8   B
  2   5   7   A
  2   5   7   B
  2   5   8   A
  2   5   8   B      

因此,如果缺少列 1 5 8 B,当我运行查询时它会显示 1 5 8 B..

有什么想法吗?

最佳答案

我会在您的源表上使用交叉联接,然后将其结果联接到您的联结表。

编辑:感谢 andy holaday 指出 MySQL 没有 FULL OUTER JOIN。

select x.*
from (select *
      from a,b,c,d) as x
left outer join j
    on (x.a = j.a and
        x.b = j.b and
        x.c = j.c and
        x.d = j.d)
where j.a is NULL and
      j.b is NULL and
      j.c is NULL and
      j.d is NULL

关于mysql - 如何检查表中是否存在多对多对多...,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11660802/

相关文章:

php - 防止显示名称重复或重新输入名称

php - Memcached奇怪的问题!

sql - 通过 LoginRoles 与表在 Web 应用程序上进行 Postgres 用户身份验证

java - 由于时区不正确,无法连接到 MySQL

mysql - SQL查询多表问题

mysql - 从 GROUP 中选择数据和最新库存

MySQL ERROR 1072 : States Key doesn't exist, 但它确实存在

php - X 分钟后更改表,即使用户关闭窗口,这是一个好方法吗?

javascript - 如果我希望用户和管理员登录后显示不同的布局,我该怎么办?

mysql - 表 1 包含名字和姓氏,表 2 包含两列引用表 1 上的名称