使用max的mysql查询不输出任何记录

时间:2014-10-29 19:22:58

标签: mysql sql select max aggregate-functions

我正在使用MySQL并具有以下表格定义:

create table student_t (student id int primary key, grade int);

然后我用以下内容填充了表格:

insert into student_t values (1, 70), (2, 90), (3, 80);

我想获得最高年级学生的身份和成绩。 我尝试以下但没有输出记录。

select * from student_t where grade = max(grade);

非常感谢帮助。谢谢你的时间!

4 个答案:

答案 0 :(得分:0)

where子句逐行应用,因为行被考虑包含在结果集中。在考虑您的各行时,max()的结果尚未公布。你必须使用"拥有"子句,效率较低,或使用子查询分别获取max()值:

SELECT * 
FROM student_t
HAVING grade = (SELECT MAX(grade) FROM student_t)

答案 1 :(得分:0)

您不能像MAX()条件那样直接使用WHERE函数(HAVING子句除外)。您的查询应如下所示,使用子查询

select * from student_t where grade in (select max(grade) from student_t);

或使用ORDER BY子句以及LIMIT运算符

select * from student_t 
order by grade desc limit 1;

答案 2 :(得分:0)

也许是这样的?

select field1, field2, field3, max(grade) from student
group by field1, field2, field3
having grade=max(grade)

SELECT * from student
having grade=max(grade)

答案 3 :(得分:0)

我的答案就在这里。 http://sqlfiddle.com/#!2/aa8c0/6

select * from student_t order by grade desc limit 1;