Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
基于多个参数的MySQL更新_Mysql - Fatal编程技术网

基于多个参数的MySQL更新

基于多个参数的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

在我的数据库中,一位教师有一个教师姓名和工资。我的数据库还有一个类,它包含一个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;

我知道这可能是非常错误的,希望能朝正确的方向轻推。

您可以尝试以下方法:

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;
)


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

请查看并记住,您可以在此处使用任何类型的联接,而不仅仅是左联接,这将使您更接近所需的联接。请详细说明学生表,好吗?请提供它包含的所有字段,并解释为什么它引用教师表