2013-05-16 55 views
1

這是不被編譯我的更新語句不編譯:更新語句中使用別名

Update Documents d 
     Set 
      DocumentDate = 1, 
      LastStatusChangedDateTime = (
       Select Top 1 DATEADD(ss,1,StatusChangedDateTime) 
        From [dbo].[DocumentStatusesHistory] dsh 
         Where dsh.DocumentID = d.DocumentID 
      ) 
      Where DocumentID In 
      (
       Select Data From dbo.Split(@DocumentIDs,',') 
      ) 

我無法使用d別名。我怎樣才能解決這個問題?

+0

http://stackoverflow.com/questions/31551/good-way-to-us電子錶的別名在更新語句 – bummi

回答

3

這個怎麼樣?

Update Documents 
     Set 
      DocumentDate = 1, 
      LastStatusChangedDateTime = (
       Select Top 1 DATEADD(ss,1,StatusChangedDateTime) 
        From [dbo].[DocumentStatusesHistory] dsh 
         Where dsh.DocumentID = d.DocumentID 
      ) 
     From Documents d 
      Where DocumentID In 
      (
       Select Data From dbo.Split(@DocumentIDs,',') 
      ) 
0

添加FROM條款:

Update d 
Set 
DocumentDate = 1, 
LastStatusChangedDateTime = (
       Select Top 1 DATEADD(ss,1,StatusChangedDateTime) 
        From [dbo].[DocumentStatusesHistory] dsh 
         Where dsh.DocumentID = d.DocumentID 
) 
FROM Documents AS d 
... 
0

試試這個:

UPDATE d 
SET  d.DocumentDate = 1 , 
     d.LastStatusChangedDateTime = (SELECT TOP 1 
              DATEADD(ss, 1, 
                StatusChangedDateTime) 
             FROM [dbo].[DocumentStatusesHistory] dsh 
             WHERE dsh.DocumentID = d.DocumentID 
           ) 

從原稿D WHERE d.DocumentID IN(SELECT數據 FROM dbo.Split(@DocumentIDs, ','))