基于几个参数的MySQL更新

问题描述:

在我的数据库中,教师有一个TeacherPIN,Name和Pay。我的数据库也有一个Class,它包含一个ClassPIN以及一个TeacherPIN和Student,它提供了TeacherPIN以及几个ClassPIN。我想根据他们是否有超过25名学生在某个班上更新某位教师的工资,但我坚持了。目前,我正在做:基于几个参数的MySQL更新

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

看看http://*.com/questions/806882/update-multiple-tables-in-mysql-using-left-join并记住,你可以在这里使用任何类型的连接,而不仅仅是左连接,这应该让你更接近你想要的东西。 – 2012-02-07 04:48:11

+0

您能详细介绍学生表吗?提供它包含的所有字段,并请解释为什么它有一个引用老师表 – 2012-02-07 05:52:15

你可以尝试以下方法:

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))计数了多少s.ClassPins有下“1010”。

(我会检查它首先,虽然:

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; 

这并假设有每个班级只有一个老师。

+0

这个技巧!谢谢! – NSchulze 2012-02-07 18:24:11