2013-05-16 54 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, ','))