Как объединить / вставить значения из column2 table1 в column2 table2 по соответствующему идентификатору - PullRequest
0 голосов
/ 03 мая 2019

Начиная с SQL сегодня. Читайте о слиянии с обновлением, вставкой и т. Д. Хотите знать, как правильно (эффективно) сделать это сейчас, пытаясь сделать следующее:

Table1
+-------+------+   
| L_ID  | N_D  |
| 1700  | 21   |
| 1400  | 1    |
| 2400  | 1    |
| 1500  | 1    |
| 1800  | 1    |
| 2500  | 1    |
| 2700  | 1    |
+-------+------+

Table2
+-------+------+   
| L_ID  | N_D  |
| 1000  | -    |
| 1100  | -    |
| 1200  | -    |
| 1300  | -    |
| 1400  | -    |
| 1500  | -    |
| 1600  | -    |
+-------+------+

Значения N_D из таблицы1 должны быть вставлены в соответствующий L_ID таблицы2, если нет совпадения, следует вставить 0.

Мой текущий фрагмент кода для этого следует, но выдает ошибку ORA-00911: invalid character

MERGE INTO Table2 x
USING (SELECT L_ID, N_D FROM Table1) y
ON (x.L_ID = L_ID)
WHEN MATCHED THEN
     UPDATE SET x.N_D = y.N_D
WHEN NOT MATCHED THEN
     x.N_D = 0

1 Ответ

2 голосов
/ 03 мая 2019

Вы можете просто использовать update:

update table2 t2
    set n_d = coalesce( (select t1.n_db from table1 t1 where t1.l_id = t2.l_id), 0);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...