我想使用聚合函数更新一列,但我不想遍历每一行。 我来自SQL Server,我们在这里做
With CTE as (select name, price, cost, quantity price*quantity as total)
update CTE
set cost = total
有了这个,我可以更新整个表,而不必遍历每条记录。如何在mysql中完成相同的任务
答案 0 :(得分:1)
只需进行计算:
update sales
set cost = price * quantity
where . . . ;
但是,SQL Server
也可以使用,而无需使用updateble CTE
:
答案 1 :(得分:1)
我的建议是根本不存储cost
列。而是创建一个视图:
CREATE VIEW sales_with_cost
AS
select name, price, cost, quantity, price*quantity as total FROM sales
您可以直接使用sales_with_cost
而不是sales
,并且可以确保数据一致而无需进行更新。