【发布时间】:2018-10-20 06:12:18
【问题描述】:
我有两张桌子
Id Name Units sold
1 n1, 100
2 n2, 95
3 n3, 84
4 n3, 84
5 n5, 100
Name Units sold Excess Units Table1_Id
n1, 100 51 9
n2, 95 43 10
n3, 84 100 11
n3, 84 33 12
n5, 100 10 13
我无法加入这两个表,因为Table1_Id 实际上是加载这两个表的临时表的Id。
每次加载后该表都会被清除。
我想在第一个表格中显示多余的单位。
到目前为止,我的方法是
select table1.*, table2.Excess_units from Table1 inner join
Table2 on Table1.Name = Table2.Name and Table1.Units_sold = Table2.Units_Sold
但是我担心我可能会遇到这样的情况 2个Table2记录,不知道哪个对应Table1
例如:
在选择n3 记录时,如何将Table1 的first and second n3 记录与Table2 的first and second n3 记录关联?
【问题讨论】:
-
这将有助于了解有关数据的更多信息。例如,为什么
n3会有两个不同的超额单位值?如果这是有效的,是否是每个位置,例如,仓库 A 中有 33 个多余的单元,但仓库 B 中有 100 个多余的单元?要么你需要更多的数据持久化(或正确的数据——来自源表的实际 id),要么你需要关于诸如求和之类的东西是否有效的要求——按名称总计产品的多余单位,但不知道个人价值观的起源。 -
未来我们会得到更多的持久化值,现在是关于表中已经存在的数据。列名和值都是为了显示潜在问题而编造的。我想基于公共列加入,并希望将
table1记录与table2中的正确对应项相关联 -
为什么不将
Table1_Id列添加到您的第一个表中,然后您只需要使用Table1_Id加入您的两个表吗?您当前的方法仅基于直觉,没有提供任何逻辑来确保获得正确的结果。 -
我不知道该把哪个
Ids 放在该列中。这就是我尝试加入查询的原因。Table1有 100000 行,table2 有 11000000 行。
标签: sql sql-server inner-join distinct primary-key