У меня есть 2 таблицы: EMP и TMP_EMP, которые оба идентичны. Я использую Oracle.Обновление столбца в таблице на основе значения из другой таблицы
EMP:
+----------+----------+
| ID | ALLOWED |
+----------+----------+
| 1-xx | 0 |
| 2-xx | 1 |
| 3-xx | 0 |
| 4-xx | 2 |
+----------+----------+
TMP_EMP:
+----------+----------+
| ID | ALLOWED |
+----------+----------+
| 1-xx | 0 |
| 2-xx | 0 |
| 4-xx | 0 |
| 5-xx | 0 |
+----------+----------+
То, что я хочу сделать, это обновить поле, допускаемые в таблице TMP_EMP и установите его в том же значении, допускаемые в ПУЭ таблица, если сотрудник существует в обеих таблицах. Короче финальный стол TMP_EMP должен выглядеть следующим образом:
TMP_EMP:
+----------+----------+
| ID | ALLOWED |
+----------+----------+
| 1-xx | 0 |
| 2-xx | 1 |
| 4-xx | 2 |
| 5-xx | 0 |
+----------+----------+
Я написал мое обновление SQL следующим образом:
update TMP_EMP
set ALLOWED = IC.ALLOWED
WHERE ID in (
SELECT IC.ID
FROM TMP_EMP tmp, EMP IC
where IC.ID LIKE decode(instr(tmp.ID,'-'),0,tmp.ID,substr(tmp.ID,0,instr(tmp.ID,'-')-1)) || '%');
Но это не работает. Я был бы очень благодарен за любую помощь здесь. Благодарю.
Пожалуйста, покажите нам, как выглядят различные идентификаторы. –
@TimBiegeleisen: идентификаторы находятся в формате y-xx. Примеры: 1-AB, 1-FD, 2-DW, 2-GF – tabby
Вы можете использовать Merge для этого – Shruti