SQL更新查询返回错误

时间:2011-02-04 00:55:59

标签: sql sql-server tsql join

运行UPDATE语句时出错:

  

当未使用EXISTS

引入子查询时,只能在选择列表中指定一个表达式

当我尝试执行此SQL查询时:

Update tblCommunityServiceMembers  
Set SeniorManagerFlag = 'Y'   
Where EmployeeList =   
         (select distinct emp.EmployeeID, csm.CommunityServiceMembers,  
          csm.SeniorManagerFlag from dbo.tblEmployee emp,   
          dbo.CommunityServiceMembers csm  
          where charindex(emp.EmployeeID, > csm.CommunityServiceMembers,1) > 0)

嵌套的选择查询确实会返回多条记录。所以我想将所有这些记录的标志值更新为Y.任何帮助表示赞赏。

3 个答案:

答案 0 :(得分:2)

如果要更新内部查询为true的所有记录的标志,则可以尝试以下查询。但我还是不明白在CHARINDEX函数中使用第二个参数。可能你需要先纠正它。

Update tblCommunityServiceMembers
Set SeniorManagerFlag = 'Y'
Where exists (select distinct emp.EmployeeID, csm.CommunityServiceMembers,
csm.SeniorManagerFlag from dbo.tblEmployee emp,
dbo.CommunityServiceMembers csm
where charindex(emp.EmployeeID, > csm.CommunityServiceMembers,1) > 0)

答案 1 :(得分:1)

子查询返回3个字段。 (employeeid,communityservicemembers,seniormanagementflag)。您将它返回到相等测试,并且SQL Server没有足够的心灵感知来知道您希望将EmployeeList与哪个字段进行比较。

答案 2 :(得分:0)

“等于”将指定值与所选值匹配。在这里看来,您只想检查子查询是否返回更新表所需的任何值。所以没有必要检查相同的值,你只需要对它进行存在检查,并且你的select返回3结果,因为有一个要检查的列,这肯定会引发错误。

希望这可能会有所帮助