add batch remove batch split batch comment selection show hidden batches hide batch highlight batch
db<>fiddle
donate feedback about
By using db<>fiddle, you agree to license everything you submit by Creative Commons CC0.
Help with an interesting Postgres question: Why isn't an Index Only Scan used on a partition accessed via the parent table?.
CREATE TABLE test1 (id INT PRIMARY KEY, val INT, idx INT);
INSERT INTO test1 VALUES (1111,11,1),(2222,22,2),(3333,33,3);
CREATE TABLE test2 (id INT PRIMARY KEY, val INT);
INSERT INTO test2 VALUES (1,111),(3,333),(5,555);
3 rows affected
3 rows affected
SELECT * FROM test1 -- исходное состояние
id val idx
1111 11 1
2222 22 2
3333 33 3
UPDATE test1 -- таблица, которую будем обновлять
SET val = test2.val -- что и на что обновляем
FROM test1 test1_1, -- ещё одна копия, для получения исходных значений
test2 -- таблица с данными для обновления
WHERE test1.idx = test2.id -- условие связывания для обновления
AND test1.id = test1_1.id -- связывание по ПК для получения исходного значения
RETURNING test1.id, -- возвращаем id записи
test1.val AS new_val, -- обновлённое значение
test1_1.val AS old_val -- и значение до обновления
id new_val old_val
1111 111 11
3333 333 33
SELECT * FROM test1 -- конечное состояние
id val idx
2222 22 2
1111 111 1
3333 333 3