2013-06-11 50 views
0

我有两个表。表A和表B。
TableA包含一个varbinary(max)列 - 名为[BinaryA] TableB包含一个包含每个varbinary卷的列(名为“Volume”,类型为“Long”)。tsql - 从选择语句更新表

,以便选择所有卷我查询

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. 

虽然我没有收到任何空当我运行

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

TableA和TableB有关吗?如果您的子查询返回多行,则将您的VOLUME设置为您的子查询将失败。你是否试图将tableA加入tableB? –

回答

4

尝试与此查询:

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字段关联。

1
UPDATE tableB 
SET [volume] = (SELECT RetrieveAccountNumber.AccountNumber 
          FROM RetrieveAccountNumber 
          WHERE tableB.leadid =RetrieveAccountNumber.LeadID) 
WHERE Sales_Import.leadid = (SELECT RetrieveAccountNumber.LeadID 
          FROM RetrieveAccountNumber 
          WHERE tableB.leadid = RetrieveAccountNumber.LeadID) 
+1

RetrieveAccountNumber如何与TableA相关? RetrieveAccountNumber从哪里来?这不在OP问题中。 –

+0

谢谢两个:-)这个解决方案也可以 – Jeb