更新不同的数据类型列

时间:2018-10-18 09:34:27

标签: sql sql-server

我有两个表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)

2 个答案:

答案 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 )