Mysql 从“学生和分数”表中选择具有最高分数的学生

Mysql 从“学生和分数”表中选择具有最高分数的学生,mysql,sql,database,Mysql,Sql,Database,我有两张桌子,学生和马克。学生表具有stid和名称,其中标记表具有stid和标记。我想找一个分数最高的学生。怎么做?我从你的问题中了解到,你需要得分最高的学生 试试这个: Select st.stid , st.name, m.marks from student st inner join mark m on st.stid = m.stid order by m.marks desc limit 1 我假设你想要学生平均分数的最大值(正如你写的“得分最高的学生””——所以我假设一个学生有

我有两张桌子,学生和马克。学生表具有stid和名称,其中标记表具有stid和标记。我想找一个分数最高的学生。怎么做?

我从你的问题中了解到,你需要得分最高的学生

试试这个:

Select st.stid ,  st.name, m.marks
from student st
inner join mark m on st.stid = m.stid
order by m.marks desc limit 1

我假设你想要学生平均分数的最大值(正如你写的“得分最高的学生””——所以我假设一个学生有很多分数

下面是模式、数据和查询示例:

create table student (
    stid int,
    name varchar(100)
)

create table mark (
    stid int,
    mark int
);

insert into student values(1, 'a');
insert into student values(2, 'b');
insert into student values(3, 'c');

insert into mark values(1, 5);
insert into mark values(1, 4);
insert into mark values(2, 6);
insert into mark values(2, 5);
insert into mark values(3, 4);
insert into mark values(3, 4);

select s.stid, s.name, a.avg_mark
from (select stid, AVG(mark) as avg_mark from mark group by stid) as a, student s
Where a.avg_mark =
    (select Max(avg_mark) as max_mark from
        (select  stid, AVG(mark) as avg_mark from mark group by stid) as x)
and
s.stid = a.stid;

是一对一,即每个学生在分数表中有一个记录吗?分数最高的学生是不要求其他学生做作业的学生…嗨,Sashi,只是为了提供信息,我们可以写上面的查询而不使用子查询这样的内部连接吗?