Вставить строки из одной таблицы в другую, начиная со строки 1? - PullRequest
0 голосов
/ 22 января 2020

Начинаю учиться ORACLE SQL и вот что я не понимаю.

У меня есть EMPLOYEES таблица, которая выглядит так (hire_date значения равны нулю)

enter image description here

И еще одна таблица под названием EMPHD с hire_date

enter image description here

Как я могу добавить HIRE_DATE значения из EMPHD в EMPLOYEES таблицу, начиная с первой строки и до конца?

Если я использую что-то вроде этого

INSERT INTO EMPLOYEES (HIRE_DATE)
SELECT HIRE_DATE FROM EMPHD

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

Извините за мой английский sh и, пожалуйста, помогите!

1 Ответ

1 голос
/ 22 января 2020

Один вариант будет использовать слияние. С помощью слияния вы можете обновить hire_date столбец, если ID значения совпадают. В противном случае только два столбца могут быть вставлены в таблицу employees как новые записи, но, похоже, это не так, поскольку все взаимно совпадающие значения 19 ID:

merge into employees e
using (select id, hire_date from emphd) h
   on ( e.id = h.id )
 when matched then update set e.hire_date = h.hire_date 
 when not matched then insert( e.id, e.hire_date ) 
                       values( h.id, h.hire_date );

Демо 1

В качестве альтернативы вы можете использовать оператор обновления напрямую путем равенства значений ID этих таблиц:

update employees e
   set e.hire_date = (select hire_date from emphd where id = e.id);

Демонстрация 2

...