Я хочу обновить несколько строк в таблице, но если значение определенного столбца не существует в другой таблице? - PullRequest
0 голосов
/ 25 июля 2011

Этот запрос выбора дает мне столбцы, которые я хочу изменить

Select * From Location 
where Location.DeviceAddress not in (Select DeviceAddress From Device)  order by DeviceAddress desc

Однако этот запрос обновления

Update Location 
set DeviceAddress = NULL
where Location.DeviceAddress not in (Select DeviceAddress From Device)

Дает мне следующую ошибку:

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

Для справки: Я использую Microsoft Server 2008, и, как всегда, помощь очень ценится

Ответы [ 3 ]

1 голос
/ 04 декабря 2012

Оказывается, эта ошибка была вызвана запросом в триггере обновления таблицы Location, поэтому я смог ее решить, отключив (и после некоторого времени исправляя) триггер.Спасибо всем, кто нашел время, чтобы помочь мне.

0 голосов
/ 25 июля 2011

попробуй

Update 
  Location 
set 
  DeviceAddress = NULL
where 
  not exists (Select null From Device where Device.DeviceAddress = Location.DeviceAddress)
0 голосов
/ 25 июля 2011

вы можете попробовать

 Update Location set DeviceAddress = NULL where Location.DeviceAddress not in (Select 
 top 1 DeviceAddress From Device where Device.DeviceAddress == Location.DeviceAddress)

, в этом случае ваш подзапрос вернет только 1 значение вместо нескольких.

...