Вместо оператора UPDATE
можно использовать оператор SELECT
, содержащий функцию анализа окна c: столбец
SELECT id, product_id, quantity, SUM(quantity) OVER (ORDER BY id) AS acumulado
FROM sma_sale_items
acumulado
не должен храниться в таблице вычислимый столбец.
Demo1
Если вы все еще предпочитаете UPDATE
, используйте:
UPDATE sma_sale_items s1
JOIN (
SELECT id, product_id, SUM(quantity) OVER (ORDER BY id) AS acumulado
FROM sma_sale_items
ORDER BY id
) s2 ON s1.ID=s2.ID
SET s1.acumulado = s2.acumulado;
Demo2
ОБНОВЛЕНИЕ : В зависимости от последнего редактирования рассмотрите возможность использования
SUM(quantity) OVER (PARTITION BY product_id ORDER BY id) AS acumulado
вместо SUM(quantity) OVER (ORDER BY id) AS acumulado
путем добавления PARTITION BY product_id
, чтобы выделить guish суммы, сгруппированные по product_id
Демо3