gpt4 book ai didi

mysql - 使用 2 组标准选择或更新 mysql 上的最大值

转载 作者:行者123 更新时间:2023-11-29 09:45:25 25 4
gpt4 key购买 nike

我正在尝试弄清楚如何在连接上正确使用 group 和 max(),我正在对 mudle(开源学校软件)mysql 数据库进行一些解析。学生可以无限期地重新参加这个特定类(class)的测验,但我需要能够更新类(class)完成日期以反射(reflect)他们上次参加测试的时间,因为很多其他事情都取决于完成字段。 mdl_quiz_attempts 表存储所有测验的所有尝试,用户 ID 将具有许多相同的条目,但尝试编号对于表来说不是唯一的,而是对于学生和行的键都是唯一的。这意味着学生有多个条目。在 mdl_course_modules 表上,instance 字段是 mdl_quiz 表的键,mdl_course_modules_completion coursemoduleid 字段是 mdl_course_modules 的键。

所以我想做的是:给定学生证将 mdl_course_completion.timemodified 更新为 mdl_quize_attempts.timemodified其中 mdl_quiz_attempts 上的行是用户 ID 对每个测验的最大尝试次数。(必须在类(class)模块实例表中查找 quiz_attempts 上的测验字段以获得类(class)完成模块 ID 的实例 ID)

以下是部分表格示例。

mdl_quiz_attempts
id quiz userid attempt timemodified
2 1 3 6 1365408901
6 1 4 1 1369873688
7 2 4 1 1369877532
8 7 4 1 1369881431
9 7 4 2 1369882897
12 5 4 1 1505165504
13 6 4 1 1369887643
17 8 4 1 1369958105
18 1 4 2 1374557701
22 7 4 3 1374639901
23 6 4 7 1374640202
24 5 4 2 1374639901
25 8 4 2 1374639901
26 2 4 2 1374639301
27 2 6 1 1376620469
29 2 12 1 1389915486
30 1 23 1 1390978667
31 1 23 2 1391030924
32 2 23 1 1392113103
33 2 23 2 1392696602
34 2 23 3 1392767435
35 7 12 1 1398914256
36 8 43 1 1405281193
37 1 50 1 1405522411
38 5 43 1 1505165504

mdl_course_modules
id course module instance section
3 2 9 2 3
5 2 17 2 4
7 2 17 3 5
8 2 17 4 6
9 2 17 5 7
10 2 17 6 8
11 2 17 7 9
12 2 17 8 10
13 2 17 9 11
14 2 17 10 12
15 2 17 11 13
25 2 16 1 14
26 2 23 1 4
28 2 7 1 14
30 4 9 4 26
42 4 23 3 33
45 4 23 6 38
46 4 23 7 37
47 4 23 8 36
48 4 23 9 35
49 4 23 10 32
50 4 23 11 34
51 5 9 5 27
53 5 23 12 43
55 5 23 13 44

mdl_quiz
id name
10 Unit 10 Quiz
11 Unit 2 Quiz
12 Unit 3 Quiz
13 Unit 5 Quiz
14 Unit 1 Quiz
15 Unit 8 Quiz
16 Unit 9 Quiz
17 Unit 7 Quiz
18 Unit 4 Quiz


mdl_course_modules_completion
id coursemoduleid userid completionstate viewed timemodified
14 25 2 0 1 0
15 25 6 0 1 0
67 25 4 1 1 1369873688
68 28 4 1 0 1369874483
69 192 4 1 0 1369875233
70 184 4 1 1 1369877532

最佳答案

类似这样的事情吗?

update mdl_course_modules_completion c
join mdl_quiz_attempts a on a.userid = c.userid
join (select max(attempt) max_attempts from mdl_quiz_attempts group by userid) max on max.max_attempts = a.attempt
set c.timemodified = a.timemodified
where c.userid = :<USER_ID>

关于mysql - 使用 2 组标准选择或更新 mysql 上的最大值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55780241/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com