首页 > 解决方案 > 连接 3 个表时重复值

问题描述

最初我有这三个表:

数据1

PK_data1

数据2

PK_data2
data1

数据3

PK_data3
data2
ext

我需要获取data1andext列,因此我尝试在 and 之间进行内部连接,然后在data1and之间进行连接,从而删除元素。问题是它从我这里提取了附加值。data2data2data3

SELECT  d1.PK_data1, d2.PK_data2, d3.ext
FROM data1 d1
JOIN data2 d2 ON d1.PK_data1 = d2.data1
JOIN data3 d3 ON d2.PK_data2 = d3.data2

但是此查询返回不应该存在的其他数据。我怀疑由于连接同时运行,它会在所有不正确的表之间建立关系。我想我应该data3data1.

我很感激任何帮助。

标签: sqlsql-server

解决方案


您可以预期重复/多条记录,因为您的联接位于具有主键列的 data1/data2 列上,除非数据列是唯一的。简单的解决方案将是一个独特的解决方案,但它可能会产生不利影响。如果您期望连接列的 data2 和 data3 中只有唯一值,则可以在这些列上指定唯一约束,这将是最佳选择。


推荐阅读