Вышла новая книга по анализу данных

На днях в сободном доступе появилась книга новая книга «Twitter Data Analytics» авторов by Шаман Кумар (Shamanth Kumar), Фред Морстатер (Fred Morstatter), Хуан Ли (Huan Liu)

20130830-222311.jpg
Читать

Update c несколькими таблицами oracle

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

UPDATE SELECT a.id, a.field1 f1, b.field1 f2 FROM A INNER JOIN B ON a.id=b.id) c SET c.f1 = c.f2

Но если мы выполним этот код, то получим ошибку ORA-01779:

cannot modify a column which maps to a non key-preserved table SQL.sql 1 140

Для того чтобы данный запрос заработал, необходимо после update добавить недокументированный хинт bypass_ujvc,  выглядеть это будет так:

UPDATE /*+ bypass_ujvc*/ (SELECT a.id, a.field1 f1, b.field1 f2 FROM A INNER JOIN B ON a.id=b.id) c SET c.f1 = c.f2

Теперь все работает на ура.  Данное решение работает на oracle ниже 11 версии