SQL服务器更新/活动列
问题描述:
我觉得这个代码是更好地展示,我想做的事:SQL服务器更新/活动列
UPDATE A
SET A.[Changed] = 1
FROM [dbo].[Table1] A
INNER JOIN [Table2] E
ON [A].[Part] = [E].[ActivePart]
UPDATE [dbo].[Table1]
[Range] = [Range]
WHERE [Partgroup] = [Partgroup] AND [Changed] > 0
之前更新:
后更新:
请帮忙。
非常感谢。
格尔茨 Vegeta_77
答
好的。这里是解决方案:
UPDATE [Table1]
SET [Range] = (SELECT [Range]
FROM [Table1] A
INNER JOIN [Table2] E
ON [A].[Part] = [E].[ActivePart])
WHERE [Partgroup] = (SELECT [Partgroup]
FROM [Table1] B
INNER JOIN [Table2] F
ON [B].[Part] = [F].[ActivePart])
有时候,我觉得complicatet。 Thx Rene。
答
是,第一部分看起来更好(即使我觉得不需要WHERE,因为它涉及同一列您要加入的)。然而,第二次更新应该不会产生任何变化:
UPDATE [dbo].[Superliste_000]
SET [Plan-TGrp-Spanne_Stfl1] = [Plan-TGrp-Spanne_Stfl1],
[Plan-TGrp-Spanne_Stfl2] = [Plan-TGrp-Spanne_Stfl2],
[Plan-TGrp-Spanne_Stfl3] = [Plan-TGrp-Spanne_Stfl3],
[Plan-TGrp-Spanne_Stfl4] = [Plan-TGrp-Spanne_Stfl4]
WHERE [Teilegruppe] = [Teilegruppe] AND [Date_change] > 0
再次更新[计划 - TGrp-Spanne_Stfl1]与[计划 - TGrp-Spanne_Stfl1] - 这是相同的价值......无论是我太厌倦并误解代码或在更新中存在另一个小错误。 ;-)
首先,我想你在你的代码中的几个位置混合了A和E ......你似乎再次用值本身更新了值。此外,在WHERE中:A. [Plan-TGrp-Spanne_Stfl1] A. [Plan-TGrp-Spanne_Stfl1]不应该是真的......请您澄清在纠正别名后您遇到的错误吗? – Tyron78
嗨雷内。你的意思是,它必须是:ON E = A而不是E = A?没有错误,但声明只更新了所有行的1行。最后一行的Plan-Column被更改应该是update-Statement的前导列。 –
说实话,我想知道为什么ANY行已经更新了。你可以用自己的值更新表A(set a。[col1] = a。[col1])ans然后用一个不可能的比较(WHERE a。[col2] a。[col2])重新整理整个语句。 ..你确定,任何一行已被更新?我会建议像“set a.col1 = e.col1 ... WHERE a.col2 = e.col2 AND a.col3 e.col3 ...” – Tyron78