我在MySQL有一张桌子,看起来像这样:
studentIDsubjectIDanotherIDanotherID2AnotherID3studentScore
这张表里有学生的记录。
假设我将以下信息存储在两个100M列表中:
python=[112335524425653]
listStudentIDs=[12.76、73.2、83.893、92.3、53.6]
如果且仅当listNewScores中的分数大于数据库中当前存储的分数(one query)时,是否可以让studentScore为所有学生(其id在listStudentIDs中)更新所有listNewScores字段?

最佳答案

在您的示例中,它们是5个学生ID,只有4个分数需要更新。
如果要更新的学生列表不长,则可以在一个查询中进行更新,如下所示:

UPDATE t_student
SET studentScore = CASE
 WHEN studentID=1    THEN 12.76
 WHEN studentID=123  THEN 73.2
 WHEN studentID=33   THEN 83.893
 WHEN studentID=5524 THEN 92.3
 ELSE studentScore END
WHERE studentID IN (1, 123, 33, 5524, 425653)

尽管如此,使用包含以下几个查询的SQL语句的可能性较小:
UPDATE t_student SET studentScore = 12.76  WHERE studentID = 1;
UPDATE t_student SET studentScore = 73.2   WHERE studentID = 123;
UPDATE t_student SET studentScore = 83.893 WHERE studentID = 33;
UPDATE t_student SET studentScore = 92.3   WHERE studentID = 5524;

10-07 13:30
查看更多