powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Смешаный UPDATE/INSERT в одном выражении
2 сообщений из 2, страница 1 из 1
Смешаный UPDATE/INSERT в одном выражении
    #33399250
EP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
EP
Гость
Здравствуйте!

Допустим, у меня есть следующие таблицы:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
# select * from t1;
 id | value 
----+-------
   0  |     12 
   1  |     19 
   2  |     78 
(записей:  3 )

# select * from t2;
 id | value 
----+-------
   1  |     54 
   4  |     31 
(записей:  2 )

Нужно проапдейтить t1 значениями из t2, чтобы в результате получилось:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
# select * from t1;
 id | value 
----+-------
   0  |     12 
   1  |     73 
   2  |     78 
   4  |     31 
(записей:  4 )

Можно ли сформулировать это в одном выражении, или писать цикл с перебором в t2 и поиском в t1?
...
Рейтинг: 0 / 0
Смешаный UPDATE/INSERT в одном выражении
    #33399317
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
~~
BEGIN;
UPDATE t1 SET t1."value" = t1."value" +
COALESCE((SELECT Sum(t2."value") FROM t2 WHERE t2.id=t1.id),0);
INSERT INTO t1 (id,"value")
SELECT t2.id, t2."value" FROM t2 LEFT JOIN t1 AS t
USING (id)
WHERE t.id IS NULL);
COMMIT;
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Смешаный UPDATE/INSERT в одном выражении
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]