Помогите, не дайте умереть в неведении!
Как на ANSI SQL (или на Informix-диалекте) пишется _эффективный_ запрос на апдейт многих полей в одной таблице данными из другой таблицы?
Так работает, но по-моему, это сильно неэффективный метод:
UPDATE t1 SET
c1 = (SELECT c1 FROM t2 WHERE t2.id=t1.id),
c2 = (SELECT c2 FROM t2 WHERE t2.id=t1.id),
c3 = (SELECT c3 FROM t2 WHERE t2.id=t1.id),
...
WHERE id IN (SELECT id FROM t2);
Когда поле одно, это ещё ничего, а когда их десяток, это как-то некрасиво выглядит.
Upd: на информиксовском диалекте это пишется так:
UPDATE t1 SET (c1,c2,c3)=
((SELECT c1,c2,c3 FROM t2 WHERE t2.id=t1.id))
Двойные скобки у вложенного селекта существены.
Оригинал этой записи в личном блоге.