添加一个行依赖于其他行的新MySQL列
我有一张名为followers的表,如下所示:添加一个行依赖于其他行的新MySQL列,mysql,sql,sql-update,Mysql,Sql,Sql Update,我有一张名为followers的表,如下所示: id FB_fans TW_fans Total_fans growth_rate 1 2 3 5 #5/5=1.0 # this col is currently NULL but i added numbers i wanted in there. 2 3 4 7 #5/7 如何创建依赖于列total_fans
id FB_fans TW_fans Total_fans growth_rate
1 2 3 5 #5/5=1.0 # this col is currently NULL but i added numbers i wanted in there.
2 3 4 7 #5/7
如何创建依赖于列total_fans中的2行的列growth_rate?请查看col增长率。里面的数字就是我想要得到的
这里是我的sql查询,如果我试图实现的是什么,但我的语法有问题
UPDATE followers
SET growth_rate=Total_fans/(Total_fans where id = id-1);
直观的方法是:
UPDATE followers f
SET growth_rate=Total_fans/(select Total_fans from followers f2 where f2.id = f.id-1);
但是,唉,这在MySQL中是行不通的,因为有一些复杂的禁令禁止在update
语句的子查询中包含正在更新的表。相反,请使用join
语法:
update followers f left outer join
followers f2
on f2.id = f.id - 1
set f.growth_rate = f.Total_Fans / f2.Total_Fans;
然后,祈祷Total_fans
永远不会0
。或者,明确检查以下内容:
update followers f left outer join
followers f2
on f2.id = f.id - 1
set f.growth_rate = (case when f2.Total_Fans > 0 then f.Total_Fans / f2.Total_Fans end);
考虑提供适当的DDL(和/或SqLFIDLE)以及期望的结果。SET@Jenn . . . 我只是想知道你不接受这个答案是否有原因。如果可以改进,我希望得到反馈。@Gordon,可能是偶然的,答案很有效。