sql - 连接 3 个表时重复值
问题描述
最初我有这三个表:
数据1:
PK_data1
数据2:
PK_data2
data1
数据3:
PK_data3
data2
ext
我需要获取data1
andext
列,因此我尝试在 and 之间进行内部连接,然后在data1
and之间进行连接,从而删除元素。问题是它从我这里提取了附加值。data2
data2
data3
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
但是此查询返回不应该存在的其他数据。我怀疑由于连接同时运行,它会在所有不正确的表之间建立关系。我想我应该data3
与data1
.
我很感激任何帮助。
解决方案
您可以预期重复/多条记录,因为您的联接位于具有主键列的 data1/data2 列上,除非数据列是唯一的。简单的解决方案将是一个独特的解决方案,但它可能会产生不利影响。如果您期望连接列的 data2 和 data3 中只有唯一值,则可以在这些列上指定唯一约束,这将是最佳选择。
推荐阅读
- android - 裁剪图像时设置圆角很热
- python - xlwings:“模块‘xlwings’中没有名称‘书’”
- node.js - 在 Heroku 上使用 npm instagram-web-api
- swift - swiftUI 核心数据 @FetchRequest 单个对象
- php - 通过 cronjob 运行时,file_put_contents 不起作用
- javascript - 允许用户输入 discord.js 嵌入
- grep - 为什么 grep -o 添加空行?
- r - 如何根据 R 中的每日收益计算历史月度波动率?
- list - 如何在不重建整个列表的情况下更新列表项
- r - 求解 R 函数的输入值