Запрос на обновление SQL, возвращающий ошибку - PullRequest
1 голос
/ 04 февраля 2011

Я получаю сообщение об ошибке при выполнении оператора 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 ]

2 голосов
/ 04 февраля 2011

Если вы хотите обновить флаг для всех записей, для которых внутренний запрос имеет значение 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 голос
/ 04 февраля 2011

Подзапрос возвращает 3 поля.(employeeid, communityservicemembers, флаг старшего руководства).Вы возвращаете его в тест на равенство, и SQL Server недостаточно телепатичен, чтобы знать, с каким полем вы хотите сравнить EmployeeList.

0 голосов
/ 04 февраля 2011

«равно» соответствует указанному значению с выбранным значением.Здесь, как кажется, вы просто хотите проверить, что если подзапрос возвращает любое значение, вам нужно обновить таблицу.Так что нет смысла проверять на равные значения, вам просто нужна проверка на существование для того же самого, а также ваш выбор возвращает 3 результата, где есть один столбец для проверки, который обязательно выдаст ошибку.это может помочь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...