基于多个参数的MySQL更新
在我的数据库中,一位教师有一个教师姓名和工资。我的数据库还有一个类,它包含一个ClassPIN、一个TeacherPIN和一个Student,其中引用了TeacherPIN和几个ClassPIN。我想根据某个班级超过25名学生的情况更新某个教师的工资,但我被卡住了。目前我正在做:基于多个参数的MySQL更新,mysql,Mysql,在我的数据库中,一位教师有一个教师姓名和工资。我的数据库还有一个类,它包含一个ClassPIN、一个TeacherPIN和一个Student,其中引用了TeacherPIN和几个ClassPIN。我想根据某个班级超过25名学生的情况更新某个教师的工资,但我被卡住了。目前我正在做: update Teacher set Pay = Pay + 1000 where (TeacherPIN = c.TeacherPIN from Class c and c.ClassPIN = '1010') a
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;
我知道这可能是非常错误的,希望能朝正确的方向轻推。您可以尝试以下方法:
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
s引入类和学生信息,并且计数(如果(s.ClassPin='1010',1,NULL))
统计“1010”下有多少个s.ClassPin
(不过我会先检查一下:
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;
)
这假设每个班只有一名教师。请查看并记住,您可以在此处使用任何类型的联接,而不仅仅是左联接,这将使您更接近所需的联接。请详细说明学生表,好吗?请提供它包含的所有字段,并解释为什么它引用教师表