MySQL:求助个基础的SQL问题

有表school如下:

CREATE TABLE school (
    class INT(11),
    name VARCHAR(20),
    status INT(11)
);

插入测试数据

INSERT INTO school VALUES(1, 'Tim', 2);
INSERT INTO school VALUES(1, 'Jack', 3);
INSERT INTO school VALUES(2, 'Lucy', 1);
INSERT INTO school VALUES(2, 'Tom', 3);
INSERT INTO school VALUES(2, 'Lily', 2);

需按class分组,并获取每班status最大的那条记录,最终得到

class name status
1     Jack 3
2     Tom  3

求解,谢谢

阅读 2.3k
3 个回答
select school.class, school.name, school.status from school inner join (SELECT class,MAX(status) as status from school GROUP BY class) B on school.class = B.class and school.status = B.status;
+-------+------+--------+
| class | name | status |
+-------+------+--------+
|     1 | Jack |      3 |
|     2 | Tom  |      3 |
+-------+------+--------+
SQL:SELECT id,MAX(status) status from demo GROUP BY id

图片描述

用子查询:
SELECT * FROM (SELECT class,name,status from school ORDER BY status DESC) as result GROUP BY result.class

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题