基于几个参数的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;
我知道这可能是非常错误的,很想朝正确的方向轻推。
答
你可以尝试以下方法:
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
看看http://stackoverflow.com/questions/806882/update-multiple-tables-in-mysql-using-left-join并记住,你可以在这里使用任何类型的连接,而不仅仅是左连接,这应该让你更接近你想要的东西。 – 2012-02-07 04:48:11
您能详细介绍学生表吗?提供它包含的所有字段,并请解释为什么它有一个引用老师表 – 2012-02-07 05:52:15