2015-05-15 4 views
0

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

Таблица l с колоннами

Make 
Model 
OEMNumberLatest 
OemNumberPrevious 
cStockCode 
cDescription 

Две колонны cStockCode, cDescription являются пустыми в данный момент и ждут, чтобы быть заполнены, и второй таблицы c с колоннами StockCode и Description

Вопрос в том, как перемещать/копировать содержимое таблицы c в строки таблицы l?

Где c.StockCode = l.OEMNumberLatest и или c.StockCode = l.OemNumberPrevious

+0

присоединиться к таблицам и выполнить обновление? –

+1

Пожалуйста, разместите стол DDL, чтобы мы могли видеть, как выглядят таблицы. –

ответ

0

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

UPDATE tableL SET 
tableL.cStockCode=tableC.StockCode,tableL.cDescription=tableC.Description 
FROM tableL 
JOIN tableC ON 
(tableC.StockCode = tableL.OEMNumberLatest) 
OR 
(tableC.StockCode = tableL.OemNumberPrevious); 

Я assument, что содержание в tableC должна быть заполнена в tableL и JOIN основан на StockCode с OEMNumberLatest или OemNumberPrevious

0

Попробуйте это (сохраните данные перед тем, как попробовать, я не уверены в своей структуре базы данных):

UPDATE l 
SET l.cStockCode = c.StockCode, l.cDescription = c.Description 
FROM l 
INNER JOIN c ON (c.StockCode = l.OEMNumberLatest OR c.StockCode = l.OemNumberPrevious) 
1

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

select l.*, c.cStockCode, c.cDescription 
from table1 l join 
    c 
    on c.StockCode = l.OEMNumberLatest or c.StockCode = l.OemNumberPrevious; 

Это кажется странным состоянием, с or, потому что вы можете получить несколько матчей.

В любом случае, вы можете преобразовать его в update легко:

update table1 l join 
     c 
     on c.StockCode = l.OEMNumberLatest or c.StockCode = l.OemNumberPrevious 
    set l.cStockCode = c.cStockCode, 
     l.cDescription = c.cDescription; 

Когда оба условия совпадают, то один будет произвольно использоваться для update.

+0

+ для указания, что это может быть достигнуто с помощью SELECT с JOIN –

+0

Magic man it works – Faktuu

Смежные вопросы