首页 > 解决方案 > SQL,表连接不会显示正确的输出

问题描述

表 1 - 静态数据

编号 1 | 颜色 1 | 状态 1 | 编号 2

____|_______|_______|______

5555 | 蓝色 | 新 | 7777

5555 | 蓝色 | 新 | 3333

5555 | 白色 | 新 | 7777

5555 | 灰色 | 新 | 7777

表 2 - 我的数据

编号 2 | 颜色 2 | 状态 2 | 编号 1

___ |_______|_______|______

7777 | 白色 | 新 | 5555

7777 | 灰色 | 旧 | 5555

表 3: - 输出

编号 1 | 编号 2 | 颜色 1 | 颜色 2 | 状态 1 | 状态 2

____|____|______|________|_______|_______|

我基本上希望表 3 告诉我我错过了 ID2 7777 的蓝色以及其他匹配的颜色。

我一直在使用类似的代码

    from table 1
    Inner Join table 2 on t1.ID1 = t2.ID1 and t1.Color1 = t2.Color 2

注意,表 1 的数据总是比表 2 多。

简单的连接似乎不会产生我想要的结果。

我在 ID 和 Color 上尝试了 inner,但它并没有输出所有内容。它不会说我错过了蓝色

如果我只加入 ID,状态将是正确的。

我尝试了外连接,但它似乎输出了错误的状态。

例如,它将输出(颜色 1 - 颜色 2)蓝色 - 灰色、蓝色 - 白色、蓝色 - 蓝色并返回颜色 2 的错误状态

标签: mysqlsqljoin

解决方案


推荐阅读