我有一个MySQL表,其中包含日期,来源,例如Facebook粉丝和第三栏,其中应包含前一天的更改。
表格如下:
Date | Source | fans | new fans
2013-02-02 | Facebook | 100 | -
2013-02-02 | Twitter | 60 | -
2013-02-03 | Facebook | 120 | -
2013-02-03 | Twitter | 62 | -
2013-02-04 | Twitter | 65 | -
2013-02-04 | Facebook | 130 | -
2013-02-05 | Facebook | 145 | -
2013-02-05 | Twitter | 70 | -
和
sql查询应将其转换为:
Date | Source | fans | new fans
2013-02-02 | Facebook | 100 | -
2013-02-02 | Twitter | 60 | -
2013-02-03 | Facebook | 120 | 20
2013-02-03 | Twitter | 62 | 2
2013-02-04 | Twitter | 65 | 3
2013-02-04 | Facebook | 130 | 10
2013-02-05 | Facebook | 145 | 15
2013-02-05 | Twitter | 70 | 5
如何计算来源两天之间的差异?
答案 0 :(得分:2)
你可以使用UPDATE JOIN
来做到这一点; a
和b
是计算两者之间差异的两行,c
是LEFT加入以确保a
和b
之间没有行。
UPDATE TableA AS a
JOIN TableA b
ON a.`Source` = b.`Source` AND a.`Date` > b.`Date`
LEFT JOIN TableA c
ON a.`Source` = c.`Source` AND a.`Date` > c.`Date` AND c.`Date` > b.`Date`
SET a.`new fans` = a.`fans` - b.`fans`
WHERE c.`Date` IS NULL
请注意,这将更新您的表中的数据,并且您应该始终在从Internet上的随机用户运行SQL更新之前进行备份:)