MySQL中SUM()函数中的筛选器特定行

MySQL中SUM()函数中的筛选器特定行,mysql,Mysql,我有一个计算学生分数的系统。目前,系统计算出最好的六门科目,但我希望它现在计算出最好的六门科目,包括英语成绩,这意味着它是最好的五门加英语。英语标记必须包含在计算中 这是我的密码 UPDATE `students` SET `term_1_avg` =( SELECT ROUND (SUM(sub_avg_term1/6)) AS term_1_avg FROM ( SELECT (sub_avg_term1) FROM marks

我有一个计算学生分数的系统。目前,系统计算出最好的六门科目,但我希望它现在计算出最好的六门科目,包括英语成绩,这意味着它是最好的五门加英语。英语标记必须包含在计算中

这是我的密码

 UPDATE `students` SET `term_1_avg` =(
     SELECT ROUND (SUM(sub_avg_term1/6)) AS term_1_avg 
     FROM (
         SELECT (sub_avg_term1) 
         FROM marks 
         WHERE marks.student_id = '$student_search_id' 
         ORDER BY sub_avg_term1 DESC LIMIT 6
    ) AS sub
 ) 
 WHERE students.student_id='$student_search_id'

我该怎么做呢?

你需要做一个由5个top和英语组成的
联盟。差不多

     UPDATE `students` SET `term_1_avg` =(
         SELECT ROUND (SUM(sub_avg_term1/6)) AS term_1_avg 
         FROM (
             (SELECT (sub_avg_term1) 
             FROM marks 
             WHERE marks.student_id = '$student_search_id' 
             AND marks.subject != 'English'
             ORDER BY sub_avg_term1 DESC LIMIT 5)
             UNION
             (SELECT (sub_avg_term1) 
             FROM marks 
             WHERE marks.student_id = '$student_search_id'
             AND marks.subject = 'English')
        ) AS sub
     ) 
     WHERE students.student_id='$student_search_id'

假设
标记
有一个
主题
字段,您可以在其中找到
作为主题之一的“英语”
。但是你可以根据你的实际结构进行修改。

谢谢,但它给了我#1221-错误地使用UNION和ORDER BY ERROR更好地将英语排除在五人小组之外,对吗?(所以你可能不会得到两次)看到了吗