我有两个表GCB.NewsOne和GCB.News两个表相同,除了一个表 它是dbo中的GCode。News表的GCode为varchar(100)null和GCB。News表具有 bigint空列。
现在我想将dbo.News中GCode中的代码更新为GCB.News
我尝试过以下操作,但不起作用
UPDATE [GCB].[NewsOne] as G
SET G.Code = (SELECT P.Code FROM GCB.NewsTwo P WHERE G.ID=P.ID)
答案 0 :(得分:2)
尝试将bigint强制转换为varchar:
UPDATE G
SET Code = CAST(P.Code AS VARCHAR(MAX))
FROM [GCB].[NewsOne] G
INNER JOIN GCB.NewsTwo P
ON G.ID = P.ID;
这假设您的问题确实是两个代码的类型,而不是其他。
还请注意,我使用更新联接语法重写了您的联接,我认为这更易于阅读。
答案 1 :(得分:2)
您不得在更新语句中使用别名。效果很好:
UPDATE [GCB].[NewsOne]
SET [GCB].[NewsOne].Code = ( SELECT P.Code FROM GCB.NewsTwo P
WHERE [GCB].[NewsOne].ID=P.ID )