小编典典

tsql-从select语句更新表

sql

我有两张桌子。表A和表B。
TableA包含一个varbinary(max)列-名为[BinaryA] TableB包含一个包含每个varbinary卷的列(名为“
Volume”,类型为“ Long”)。

为了选择我查询的所有卷

SELECT ID, MyVolume = DATALENGTH([Binary])
FROM [VAULT].[TABLEA]

比,我想用它的体积更新tableB。

然后我写

update [TableB] 
set [VOLUME]  = ( SELECT MyVolume = DATALENGTH([Binary])
              FROM [VAULT].[TABLEA] ab
          WHERE id = ab.[Id])

我收到比

Cannot insert the value NULL into column 'Volume', table 'MySchema.Asset';
column does not allow nulls. UPDATE fails.

虽然我在运行时没有收到任何NULL

SELECT ID, MyVolume = DATALENGTH([Binary])
FROM [VAULT].[TABLEA]

阅读 157

收藏
2021-04-14

共1个答案

小编典典

尝试使用此查询:

UPDATE TableB 
SET TableB.[VOLUME] = DATALENGTH([T2.Binary])
FROM TableB
INNER JOIN [VAULT].[TABLEA] T2 ON TableB.TAL_ID = T2.TAL_ID

假设TableB和[VAULT]。[TABLEA]通过ID字段关联。

2021-04-14