我有以下数据库: 以下查询计算总金额,该金额来自将产品价格与相应购买数量相乘,其金额字段等于NULL的订单:
SELECT SUM(i.qtde * p.preco_unitario) FROM Produtos p
INNER JOIN ItensPedido i ON i.id_produto = p.id_produto
INNER JOIN Pedidos pd ON pd.id_pedido = i.id_pedido
WHERE pd.vlr_total IS NULL
GROUP BY i.id_pedido);
我可以使用以下查询更新Pedidos表中的行:
UPDATE Pedidos p
SET p.vlr_total = (SELECT SUM(i.qtde * p.preco_unitario) FROM Produtos p
INNER JOIN ItensPedido i ON i.id_produto = p.id_produto
WHERE i.id_pedido = 1
GROUP BY i.id_pedido)
WHERE p.id_pedido = 1;
但我必须为我想要更新的每一行重新运行此查询,更改两个WHERE子句。
我需要帮助的是构建一个查询,使用单个查询(如果可能)更新所有具有NULL数量的注册表,类似于第二个。我尝试将第一个查询用作子查询会产生1093错误:在子查询中使用更新中的相同目标表。
答案 0 :(得分:1)
您应该可以通过更改子查询中的这一行来实现这一点,这将设置子查询WHERE子句以匹配外部表中的记录。
WHERE i.id_pedido = p.id_pedido
要
Start Date
然后你可以删除外部WHERE,除非你真的想把它限制为p.id_pedido = 1