Записи обновления SQL в одной таблице, удовлетворяющие результату запроса для связанной таблицы - PullRequest
0 голосов
/ 31 октября 2011

Я пытаюсь обновить количество записей в одной таблице, которые основаны на результате запроса из связанной таблицы. В этом примере у меня есть 150 записей в tbl_events, которые я хочу обновить с помощью "enter_by", и для того, чтобы получить эти 150 записей, мне нужно сопоставить выборку со 150 записями в tbl_locations, значение "нуждается в обновлении" в поле для заметок. Значение "Entered_by" не существует в tbl_locations, я просто пытаюсь обновить таблицу на основе предварительных условий отношений. Но я получаю следующую ошибку:

UPDATE TBL_EVENTS 
SET Entered_By = 'Fred' 
FROM GRSTBL_EVENTS as sp
JOIN TBL_LOCATIONS as so
On sp.Location_ID = so.Location_ID
  AND so.Notes =(SELECT Notes from TBL_LOCATIONS where Notes = 'needs update')

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

Ответы [ 2 ]

1 голос
/ 01 ноября 2011

вы можете использовать в

UPDATE TBL_EVENTS
SET Entered_By = 'Fred'
FROM GRSTBL_EVENTS as sp
JOIN TBL_LOCATIONS as so
On sp.Location_ID = so.Location_ID
AND so.Notes  in (SELECT Notes from TBL_LOCATIONS where Notes = 'needs update')
0 голосов
/ 31 октября 2011

Если я правильно понимаю ваши структуры данных, то вам нужно обновить поле selected_by, если в соответствующей таблице tbl_locations есть какие-либо примечания.

Если это так, то следующее, известное как коррелированное подзапрос должен делать то, что вы хотите

UPDATE TBL_EVENTS 
SET Entered_By = 'Fred' 
WHERE EXISTS (
  SELECT 1 
  FROM   TBL_LOCATIONS 
  WHERE  TBL_LOCATIONS.Location_ID = TBL_EVENTS.Location_ID
  AND    TBL_LOCATIONS.Notes = 'needs update'
)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...