我正在使用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);
非常感谢帮助。谢谢你的时间!
答案 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;