Неверный синтаксис SQLServer - PullRequest
0 голосов
/ 04 февраля 2011

вот чего я хочу добиться:

4 таблицы участвуют:

  • Игроки с PlayerID в качестве PK,
  • Соревнования с CompetID как PK
  • Результаты с ResultID в качестве PK и CompetID в качестве FK

И четвертая таблица: PlayerResultts с ResultID + PlayerID в качестве PK и CompetID в качестве нового созданного мной столбца.

Соревнования, результаты и PlayerResults уже заполнены и довольно велики (пока 300000 PlayerResults).

Чтобы заполнить столбец PlayerResults.CompetID, я пытаюсь запросить обновление ... (Выбрать ....), но мне не известен правильный синтаксис, и он не работает.

Вот моя слабая попытка:

update PlayerResults
set competid = (select distinct(r.competid) from results r, playerresults p  
where r.resultID = p.resultid)

Ошибка (конечно):

"Msg 512, Уровень 16, Состояние 1, Строка 1 Подзапрос вернул более 1 значения. Это недопустимо, если подзапрос следует =,! =, <, <=,>,> = Или когда подзапрос используется в качестве выражения. "

Может кто-нибудь направить меня в правильном направлении? ТИА

1 Ответ

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

Вам не нужны отличные

update PlayerResults
set competid = r.competid
from results r
where r.resultID = PlayerResults.resultid
...