Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
添加一个行依赖于其他行的新MySQL列_Mysql_Sql_Sql Update - Fatal编程技术网

添加一个行依赖于其他行的新MySQL列

添加一个行依赖于其他行的新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

我有一张名为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中的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,可能是偶然的,答案很有效。