我在MySQL
有一张桌子,看起来像这样:studentID
subjectID
anotherID
anotherID2
,AnotherID3
,studentScore
这张表里有学生的记录。
假设我将以下信息存储在两个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;