MySQL-查询成绩为第二名(第N名)的所有学生数据

1.需求如下
查询成绩(grade)为第二名的所有学生,从下图数据可以看到,97分为分数第二,有三个学生成绩为第二,找出来。

MySQL-查询成绩为第二名(第N名)的所有学生数据_第1张图片
相关表数据相关语句

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for score
-- ----------------------------
DROP TABLE IF EXISTS `score`;
CREATE TABLE `score` (
  `id` int(11) NOT NULL,
  `name` varchar(255) DEFAULT NULL,
  `grade` int(11) DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

-- ----------------------------
-- Records of score
-- ----------------------------
INSERT INTO `score` VALUES ('1', 'liming', '99');
INSERT INTO `score` VALUES ('2', 'zhangsan', '97');
INSERT INTO `score` VALUES ('3', 'wangwu', '88');
INSERT INTO `score` VALUES ('4', 'xulan', '97');
INSERT INTO `score` VALUES ('5', 'jiangnan', '97');
INSERT INTO `score` VALUES ('6', 'qianqian', '99');

SQL语句如下:
1.使用max函数 嵌套子查询 输出相应数据

select * from score where grade =
 (select grade from score where grade < 
 (select max(grade) from score ) limit 1);

2.使用distinct函数 嵌套子查询 输出相应数据

select * from score where grade =
(select distinct(grade) from score order by grade desc limit 1,1);

执行结果
MySQL-查询成绩为第二名(第N名)的所有学生数据_第2张图片
注意:写sql语句 括号 分号记得是英文环境下输入的为上

你可能感兴趣的:(MySQL)