如何在mysql

时间:2018-10-12 12:17:00

标签: mysql sql database

我想使用聚合函数更新一列,但我不想遍历每一行。 我来自SQL Server,我们在这里做

With CTE as (select name, price, cost,  quantity price*quantity as total)
update CTE 
   set cost = total

有了这个,我可以更新整个表,而不必遍历每条记录。如何在mysql中完成相同的任务

2 个答案:

答案 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,并且可以确保数据一致而无需进行更新。