2012-08-08 89 views
0
Update [E1$] 
set [LR/Virtual/MW]='LR' , 
[Vir No#]=null 
where [Conc] , [Vir No#] 
    in ( 
    SELECT [Conc] , [Vir No#] 
    FROM [E1$] 
    where [Vir No#] is not null 
    group by Conc , [Vir No#] 
    having Count(LR)<28 
) 

回答

2

尝试:

Update E set [LR/Virtual/MW]='LR' , [Vir No#]=null 
    from [E1$] E join 
     (SELECT [Conc] , [Vir No#] 
     FROM [E1$] where [Vir No#] is not null 
     group by Conc ,[Vir No#] 
     having Count(LR)<28 
     ) a 
on e.[Conc]=a.[Conc] 
    and e.[Vir No#]=a.[Vir No#] 
+0

我收到异常> System.Data.OleDb.OleDbException(0x80040E14):语法错误从[E1(缺少运算符)查询表达式“空$] E join(SELECT [Conc],[Vir No#] FROM [E1 $]其中[Vir No#]不是空组by Conc,[Vir No#]有Count(LR)<28)a on。 [Conc] = a。[Conc]和e。[Vir No#] = a。[Vir No#]'。 在System.Data.OleDb.OleDbCommand.ExecuteCommandTextErrorHandling(OleDbHResult小时) 在System.Data.OleDb.OleDbCommand.ExecuteCommandTextForSingleResult(tagDBPARAMS dbParams,对象及的ExecuteReuslt) – 2012-08-08 13:38:53

+0

@AhmedDarwish:您是否获得在SQL服务器或前端应用程序中的错误? – 2012-08-08 13:40:55

+0

前端......当我在SQL管理工作室中运行它时,它正常运行 – 2012-08-08 13:43:48

0

尝试在where子句中使用围绕([conc], [Vir No#])的括号。

Update [E1$] 
set [LR/Virtual/MW]='LR' , 
[Vir No#]=null 
where ([Conc] , [Vir No#]) in 
( 
    SELECT [Conc] , [Vir No#] 
    FROM [E1$] 
    where [Vir No#] is not null 
    group by Conc , [Vir No#] 
    having Count(LR)<28 
) 
0
Update [E1$] 
set [LR/Virtual/MW]='LR',[Vir No#]=null 
where exists( 
    SELECT [Conc] , [Vir No#] 
    FROM [E1$] e2 
    where [Vir No#] is not null and [E1$].[Conc]=e2.[Conc] and [E1$].[Vir No#]=e2.[Vir No#] 
    group by Conc , [Vir No#] 
    having Count(LR)<28 
)