运行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.任何帮助表示赞赏。
答案 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结果,因为有一个要检查的列,这肯定会引发错误。
希望这可能会有所帮助