2013-06-11 65 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