2014-01-27 4 views
1

Так что я TABLE_ONE с двумя колоннами ... ID и expire_dateОбновление таблицы с данными из другой таблицы

и TABLE_TWO с теми же двумя колоннами, за исключением EXPIRE_DATE имеет фиктивное значение и должна быть заполнена от первого Таблица.

Мне нужно получить последний EXPIRE_DATE (последняя дата, не добавленная последним) для данного идентификатора из TABLE_ONE и заполнить все вхождения этого идентификатора в TABLE_TWO с помощью этого EXPIRE_DATE.

Я думаю, ясно, что идентификатор не является ПК в любой таблице. Это повторяется.

Как написать это ОБНОВЛЕНИЕ от TABLE_TWO?

Спасибо!

+0

Обновление SQL из одной таблицы в другую на основе совпадения ID - http://stackoverflow.com/questions/224732/sql-update-from-one-table-to-another-based-on-a-id- match? rq = 1 – Lexib0y

+0

Вы всегда должны указывать, какую базу данных вы используете, а также примерный образец тоже приветствуется (хотя в этом случае не обязательно). –

ответ

0

Что-то вроде этого:

update table2 
set expire_date = expdate 
from table2 join 
(select id, max(expire_date) expdate 
from table1 
where whatever 
group by id) temp on table2.id = temp.id 
where whatever 

Обратите внимание, что ваши два где пункты должны быть одинаковыми.

+0

Это работает! Благодаря! – user1327418

0

Вы можете сделать это с помощью связанного подзапроса в предложении set:

update table_two 
    set expire_date = (select max(t1.expire_date) from table_one t1 where t1.id = table_two.id); 

Это стандартный синтаксис SQL и должен работать во всех (или почти всех баз данных). Некоторые базы данных допускают объединения в предложении update, но не все. Даже среди тех, которые делают, синтаксис меняется.

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