MySQL更新基于几个参数

时间:2012-02-07 04:44:01

标签: mysql

在我的数据库中,教师有一个TeacherPIN,Name和Pay。我的数据库还有一个Class,它包含一个ClassPIN以及一个TeacherPIN和Student,它引用了TeacherPIN以及几个ClassPIN。我想更新某位教师的薪水,如果他们在某个班级的学生人数超过25人,但我被困了。目前我正在做:

update Teacher
set Pay = Pay + 1000
where (TeacherPIN = c.TeacherPIN from Class c 
and c.ClassPIN = '1010')
and (select count(s.ClassPIN) from Student s 
where s.ClassPIN = '1010') >= 25;

我知道这可能是非常错误的,并且喜欢在正确的方向上轻推。

1 个答案:

答案 0 :(得分:0)

您可以尝试以下方法:

UPDATE Teacher t
SET Pay = Pay + 1000
LEFT JOIN Class c ON c.TeacherPIN=t.TeacherPIN
LEFT JOIN Student s ON s.ClassPIN = c.ClassPIN
WHERE COUNT(IF(s.ClassPin='1010',1,NULL))>25;

两个JOIN引入了班级和学生信息,COUNT(IF(s.ClassPin='1010',1,NULL))统计了“1010”下的s.ClassPins数量。

(我先检查一下:

SELECT * 
FROM Teacher t
LEFT JOIN Class c ON c.TeacherPIN=t.TeacherPIN
LEFT JOIN Student s ON s.ClassPIN = c.ClassPIN
WHERE COUNT(IF(s.ClassPin='1010',1,NULL))>25;

这假设每个班级只有一名教师。