SELECT
a.*
,b.*
FROM
(SELECT b.s ,b.C ,b.score
,(SELECT COUNT(*) FROM sc a WHERE a.c='01'AND a.score>b.score)+1 mc
FROM sc b WHERE b.c='01' HAVING mc BETWEEN 2 AND 3
+1是什么意思?该查询正在尝试对每门课程的第二名和第三名学生及其成绩进行排名。
谢谢
答案 0 :(得分:0)
它只是加法运算符(加号)
因此它将1加到子查询返回的结果中。之所以有效,是因为您的子查询总是返回,因为它是一个没有GROUP BY的COUNT(*)
(SELECT COUNT(*) FROM sc a WHERE a.c='01'AND a.score>b.score)
如果子查询重新运行计数为0,则您的mc
列将为0 + 1 = 1
另外,您的查询格式不正确:您有一个HAVING
子句而没有GROUP BY
子句