我得到了一个我必须做的更新查询,我正在努力解决它。
我有3列,ID,收入,平均收入。
AverageIncome的所有值都不正确,我需要更新它们才是正确的。
任何提示?
谢谢!
答案 0 :(得分:0)
在MySQL语法中,并假设订单由id
列定义:
CREATE TEMPORARY TABLE my_table_copy AS SELECT * FROM my_table;
UPDATE my_table t
SET average_income = (SELECT AVG(tc.income)
FROM my_table_copy tc
WHERE tc.id < t.id
ORDER BY tc.id DESC
LIMIT 10
);
DROP TABLE my_table_copy;
当然,您必须确保CREATE TABLE
和UPDATE
以原子方式执行,即不会修改另一个之间的数据。
另外请记住,这不是一个非常好的设计,正如其他用户已经指出的那样。您的数据将具有冗余。在这种情况下,您可能会更好地使用视图。