MySql 實現查詢每個班級學習成績前N的學生
首先建一張學生成績信息表:
CREATE TABLE t_student (
stu_id int(11) NOT NULL AUTO_INCREMENT COMMENT '學生ID',
stu_name varchar(50) NOT NULL COMMENT '學生名稱',
score decimal(5, 2) NOT NULL COMMENT '學生總成績',
class_id int(11) NOT NULL COMMENT '班級ID',
PRIMARY KEY (stu_id),
INDEX IDX_t_student_score (score)
)
ENGINE = INNODB
AUTO_INCREMENT = 7
AVG_ROW_LENGTH = 2730
CHARACTER SET utf8
COLLATE utf8_general_ci
COMMENT = '學生信息表'
ROW_FORMAT = DYNAMIC;
插入如下的數據:
1 張三 80.00 1
2 李四 81.00 1
3 信達 70.00 1
4 魯西 90.00 2
5 米亞 93.00 1
6 凱斯 85.00 2
查詢每個班級學生成績前三的學生信息,查詢腳本如下:
SELECT a.stu_name,a.score,a.class_id FROM t_student a LEFT JOIN t_student b
ON a.class_id = b.class_id AND a.score < b.score
GROUP BY a.class_id ,a.stu_id,a.score
HAVING COUNT(b.stu_id) < 3 ;
查詢結果: