菜鸟求mysql的执行语句,要如下效果:

求出每个学生最近7次考试总和,最近7次中的最高分,最近7次的最低分,将所求值填到他们的最近一次的考试时间上namescoredatelastsum7(最后7次总和)las... 求出每个学生 最近7次考试总和,最近7次中的最高分,最近7次的最低分, 将所求值填到他们的最近一次的考试时间上
name score date lastsum7(最后7次总和) lastmax7(最后7次中最高分) lastmin7(最后7次中最低分)
展开
 我来答
飞鱼678
推荐于2016-01-22 · TA获得超过1052个赞
知道小有建树答主
回答量:708
采纳率:0%
帮助的人:550万
展开全部
UPDATE student
SET lastsum7 = (
SELECT
SUM(st1.ss1)
FROM
(
SELECT
s1.score ss1
FROM
(
SELECT
score
FROM
student
WHERE
NAME = '小东'
ORDER BY
date DESC
LIMIT 0,
7
) s1
) st1
),
lastmax7 = (
SELECT
MAX(st2.ss2)
FROM
(
SELECT
s2.score ss2
FROM
(
SELECT
score
FROM
student
WHERE
NAME = '小东'
ORDER BY
date DESC
LIMIT 0,
7
) s2
) st2
),
lastmin7 = (
SELECT
MIN(st3.ss3)
FROM
(
SELECT
s3.score ss3
FROM
(
SELECT
score
FROM
student
WHERE
NAME = '小东'
ORDER BY
date DESC
LIMIT 0,
7
) s3
) st3
)
WHERE
date = (
SELECT
MAX(dt.d)
FROM
(
SELECT
date d
FROM
student
WHERE
NAME = '小东'
) dt
)
AND NAME = '小东';

名字条件只能这么指定。
如果你想不指定,那就写过程,或者函数。用循环遍历。
student是表名。

CREATE PROCEDURE upscore ()
BEGIN
declare stName VARCHAR(64);
declare NameCursor cursor for select name from student GROUP BY name;
open NameCursor;
loop_label:LOOP
fetch NameCursor into stName;

UPDATE student
SET lastsum7 = (
SELECT
SUM(st1.ss1)
FROM
(
SELECT
s1.score ss1
FROM
(
SELECT
score
FROM
student
WHERE
NAME = stName
ORDER BY
date DESC
LIMIT 0,
7
) s1
) st1
),
lastmax7 = (
SELECT
MAX(st2.ss2)
FROM
(
SELECT
s2.score ss2
FROM
(
SELECT
score
FROM
student
WHERE
NAME = stName
ORDER BY
date DESC
LIMIT 0,
7
) s2
) st2
),
lastmin7 = (
SELECT
MIN(st3.ss3)
FROM
(
SELECT
s3.score ss3
FROM
(
SELECT
score
FROM
student
WHERE
NAME = stName
ORDER BY
date DESC
LIMIT 0,
7
) s3
) st3
)
WHERE
date = (
SELECT
MAX(dt.d)
FROM
(
SELECT
date d
FROM
student
WHERE
NAME = stName
) dt
)
AND NAME = stName;

end LOOP;
close NameCursor;
end;

这是存储过程,
直接生成过程。然后 CALL upscore();就行了。
追问
非常感谢, 真的非常感谢,  容我测试一下
追答
上边的是不用存储过程,直接用sql语句,这样的话你要处理哪个人所有指定人作为条件的都要变。
看你的表只有3个人好说。但是如果你是要处理n多个人,这样指定不现实。所以用下边的存储过程,无论多少人都给处理。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式