【发布时间】:2018-01-11 13:29:04
【问题描述】:
我有两个相同的表 (x) 和 (y)(我从表 x 备份到表 y)我删除了表 x 中的所有内容以重新生成新行(我添加了 restmilk_3 作为额外参数)。
现在我的 ID 在表 x 中是新的(它移动是因为我添加了 restmilk_3),所以我想按名称和 RID(配方 ID)将值从表 y 复制到 x
那么它的样子:
**table y**
ID - RID - Name - Value
1 - Cheese_rec_100 - restmilk_1 - cheese1
2 - Cheese_rec_100 - restmilk_2 - cheese3
3 - Cheese_rec_100 - milkamount - 5000
..
100- Cheese_rec_100 - milkdensity - 0.46
**table x** (We added restmilk 3 as a new parameter):
ID - RID - Name - Value
1 - Cheese_rec_100 - restmilk_1 - NULL
2 - Cheese_rec_100 - restmilk_2 - NULL
3 - Cheese_rec_100 - restmilk 3 - NULL
4 - Cheese_rec_100 - milkamount - NULL
..
100- Cheese_rec_100 - milkdensity - NULL
After the query:
ID - RID - Name - Value
1 - Cheese_rec_100 - restmilk_1 - cheese1
2 - Cheese_rec_100 - restmilk_2 - cheese3
3 - Cheese_rec_100 - restmilk 3 - NULL
4 - Cheese_rec_100 - milkamount - 5000
..
100- Cheese_rec_100 - milkdensity - 0.46
所以我不能使用 ID 作为键来复制值,但我需要检查两个表中的 RID 和名称是否相等。
我尝试了很多东西,但我没有解决这个难题的技能/经验。
我使用 Microsoft SQL Server Management Studio 数据库排序规则:Latin1_General_CI_AS 兼容级别:SQL Server 2012
我拥有所有管理员权限。
现有表示例:
ID RID Version NodeID Name TagAddress Value
854389 Cheese_Rec_00100 61 8 _RestMilk14 - 0
854390 Cheese_Rec_00100 61 8 _RestMilk15 - 0
854391 Cheese_Rec_00100 61 8 _RestMilk16 - 0
854392 Cheese_Rec_00100 61 8 _RestMilk17 - 0
854393 Cheese_Rec_00100 61 8 _RestMilk18 - 0
854394 Cheese_Rec_00100 61 8 _Starter1388Delay - 240
854395 Cheese_Rec_00100 61 8 _Starter1388Target - 90
854396 Cheese_Rec_00100 61 8 _Starter1389Delay - 0
854397 Cheese_Rec_00100 61 8 _Starter1389Target - 0
854398 Cheese_Rec_00100 61 8 _TransPercentageFat - 0,94
854399 Cheese_Rec_00100 61 8 _TransPercentProtein - 0,935
854400 Cheese_Rec_00100 61 8 _VATPostWaterTempSP - 33,1
854401 Cheese_Rec_00100 61 8 _VATRecipeNo - 19
854402 Cheese_Rec_00100 61 8 _WheyCreamLimit - 2
854403 Cheese_Rec_00100 61 8 _AmountOfMilk - 1000
854404 Cheese_Rec_00100 61 8 _AverageWeightAt15D - 13,3
854405 Cheese_Rec_00100 61 8 _CaCl2Delay - 600
854406 Cheese_Rec_00100 61 8 _CaCl2Target - 0,1337
【问题讨论】:
-
这里似乎是旧的 XY 问题。为什么要更改表 X 中的 ID?如果您复制了所有数据,表 Y 中的所有“值”如何最终变为空?没有加起来的东西。除非您将表 ID 用于配方订单?这不是 ID 的用途。如果有必要,您应该有一个单独的列用于订购。
-
我需要“重新生成”行以添加新参数 restmilk_3,因此我删除了表 x 中的所有内容并使用现有程序重新生成了参数列表。这就是我将表 x 复制到 y 的原因,这样我就可以放回信息,而操作员只需填写新参数 restmilk_3。
-
为什么程序没有将新指令添加为 ID 101?为什么要用新 ID 替换 ID 3?这不是好的做法。是否有任何其他表通过外键链接到该表?如果是这样,那些钥匙现在不是坏了吗?
-
嗨,Jacob,那是因为程序是一次性生成一个表格,而不是像现在这样不理会它:) 但是几年后我们需要一个额外的参数。该参数表用于复制到带有 OPC 服务器的 PLC。我很擅长重建这部分的技能,所以这就是我这样做的原因。我的问题没有解决方案吗?如果没有,我必须找到其他方式
-
有可能,只是试图避免您的数据被损坏...名称字段中的所有值对于每个 RID 是否都是唯一的?
标签: sql sql-server tsql join insert