2013-12-12 4 views
0

У меня есть таблица extradata, которую необходимо обновить. Он должен быть обновлен для 863 разных учетных записей.Обновить таблицу из запроса большого выбора

Вот блок запроса, который возвращает и помещает в временную таблицу номера учетных записей, которые необходимо изменить.

Есть ли простой способ сделать массовое обновление по этому запросу?

declare @tmp table (number int) 

insert into @tmp 
select accountid as number from letterrequest 
where lettercode in ('97001','70003','19998','91009','20000','99100','19997','70002','99099','91008','97002','97210','97231') 
and dateProcessed >= '2013-12-04' 
union all 
select number from gizmo_requests 
where letterCode in (97001,70003,19998,91009,20000,99100,19997,70002,99099,91008,97002,97210,97231) 
and dateProcessed >= '2013-12-04' 
union all 
select number from jm_efiling 
where letter in (97001,70003,19998,91009,20000,99100,19997,70002,99099,91008,97002,97210,97231) 
and datePrinted >= '2013-12-04' 

select distinct * from @tmp 

Этот запрос возвращает 863 строки идентификатора учетной записи.

update extradata set line4 = 'TEST' 
where extracode = 'L3' 
and number in @tmp 

только если столбец числа находится в таблице темп выше.

+0

Внутреннее объединение экстракоде к @tmp? –

+0

Что вы подразумеваете под «легким»? Быстрее или лучше код? – Shiva

+0

@shiva Легко, как простой способ обновить 863 из таблицы tmp. Единственный способ, которым я могу это сделать, - это боль, создавая цикл while. –

ответ

3

Try:

update extradata set line4 = 'TEST' 
from extradata inner join @tmp T 
on extradata.number = T.number 
where extracode = 'L3' 

Вы можете использовать присоединяется обновление запросов

+0

Любой, кто хочет получить отличные значения от @tmp? По какой-то причине, когда я соединяю две таблицы, он возвращает 865 результатов. но когда я выбираю отдельное и внутреннее объединение двух таблиц, оно возвращает 863. Не знаете, почему неявная версия возвращает две дополнительные строки. –

+1

Возможно, у вас есть записи с одним и тем же «числом» в таблице extradata? –

1

Использование in с подзапроса в where заявлении:

update extradata 
    set line4 = 'TEST' 
    where extracode = 'L3' and 
      number in (select number from @tmp); 
Смежные вопросы