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是什么意思?该查询试图对每门课程的第二名和第三名学生及其成绩进行排名。
谢谢
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是什么意思?该查询试图对每门课程的第二名和第三名学生及其成绩进行排名。
谢谢
1条答案
按热度按时间pnwntuvh1#
它只是加法运算符(plus)
因此,它向子查询返回的结果中添加1。这是因为子查询总是返回一个整数,因为它是一个计数(*),没有分组依据
如果子查询retruns的计数为0,则
mc
列将为0+1=1此外,您的查询格式不正确:您有一个
HAVING
不带a的子句GROUP BY
条款