mysql更新表某字段值,使其等于前7条记录的汇总值,如何写sql?

游北亮
博客专家认证
2015-07-27 01:56:07
有一个下载量表,有日期、当日下载 和 近7天下载 这3个字段,
现在当日下载已经有数据了,请问如何更新 近7天下载 这个字段呢?

SqlServer里的SQL语句可以这么写实现,如:
UPDATE a SET a.down7=(
SELECT SUM(down) FROM downData b WHERE b.ndate<=a.ndate AND b.ndate>dateadd(d, -7,a.ndate)
)
FROM downData a


同样的set a.down7=(select )
这种语法放MySql里,就出错了, 求大师指点,MySql里如何更新???
...全文
173 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
游北亮 2015-07-27
  • 打赏
  • 举报
回复
感谢,怎么就忘记可以在Select里内嵌子查询了
引用 2 楼 yangb0803 的回复:
更新语句大概可以这么写:

UPDATE downData AS t
INNER JOIN
(SELECT tt.ndate,
(SELECT SUM(down) FROM downData  
WHERE ndate <= tt.ndate AND ndate >= 
DATE_ADD(tt.ndate, INTERVAL -6 DAY)) AS mds
FROM downData AS tt
) AS ttt  
ON ttt.ndate=t.ndate
SET t.down7=ttt.mds
道玄希言 2015-07-27
  • 打赏
  • 举报
回复
更新语句大概可以这么写:

UPDATE downData AS t
INNER JOIN
(SELECT tt.ndate,
(SELECT SUM(down) FROM downData  
WHERE ndate <= tt.ndate AND ndate >= 
DATE_ADD(tt.ndate, INTERVAL -6 DAY)) AS mds
FROM downData AS tt
) AS ttt  
ON ttt.ndate=t.ndate
SET t.down7=ttt.mds
道玄希言 2015-07-27
  • 打赏
  • 举报
回复
查询语句:

SELECT t1.*,
(SELECT SUM(down) FROM downData 
WHERE ndate<t1.ndate AND ndate>=DATE_ADD(t1.ndate, INTERVAL -7 DAY)) AS mdown
FROM downData AS t1
ORDER BY ndate

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧