Обновить запрос Oracle - PullRequest
       0

Обновить запрос Oracle

1 голос
/ 03 декабря 2010

У меня есть таблица TB1, в которой есть следующие столбцы:

ID        |    date  
---------------------
1         |    12-JUL-10
2         |    12-JUL-10
3         |    12-JUL-10
4         |    12-JUL-10
.
.
.
10000     |    12-JUL-10

table2

ID        |    date  
---------------------
1         |    12-JAN-09
2         |    12-JUL-09
3         |    12-JUL-09
4         |    12-JUL-08
.
.
.
5800      |    12-JUL-08

Как обновить дату таблицы2 с идентичным идентификатором таблицы 1.

Спасибо:)

Ответы [ 2 ]

3 голосов
/ 03 декабря 2010

В общем

   UPDATE table2 t2
       SET date_col = (SELECT t1.date_col
                         FROM table1 t1
                        WHERE t1.id = t2.id)
     WHERE EXISTS (
        SELECT 1
          FROM table1 t1
         WHERE t1.id = t2.id )

Если вы можете гарантировать, что каждый идентификатор в таблице2 существует в таблице1 (или если вы хотите, чтобы для date_col было задано значение NULL, если совпадений нет), вы можете исключить WHERE EXISTS,Но, как правило, вы хотите выполнить обновление только при наличии соответствующей записи.

0 голосов
/ 03 декабря 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...