Mysql 获取第一个和第二个最大值的sql where条件
我正在处理SQL,我有以下问题:Mysql 获取第一个和第二个最大值的sql where条件,mysql,sql,Mysql,Sql,我正在处理SQL,我有以下问题: select * from( select tname,teacher.tid,grade from teacher inner join _view on(_view.tid=teacher.tid))as D group by grade where // what should I do here to get the rows having the first and the second m
select * from(
select tname,teacher.tid,grade from teacher
inner join
_view
on(_view.tid=teacher.tid))as D
group by grade
where // what should I do here to get the rows having the first and the second maxium values?
order by grade desc,tid;
我只想选择具有第一个最大值和第二个最大值的行
,从昨天开始,我尝试了很多东西,但没有从中受益
当我使用诸如MAX、COUNT或之类的东西时,我得到了聚合函数的一个错误,请帮助我,因为我已经尽了我所能 试试看:
ORDER BY grade DESC LIMIT 2
我相信你可以做到:
select tname,teacher.tid,grade
from teacher
inner join _view on _view.tid=teacher.tid
order by grade desc,tid
limit 2;
“限制2”将获取刚刚从SELECT中获取的列表的前两行。因为您有order by grade desc,所以将返回具有两个最高级别的记录
从:
LIMIT子句可用于约束返回的行数
通过SELECT语句。LIMIT接受一个或两个数值参数,
必须都是非负整数常量(使用
编写的声明)
您还执行了一个派生查询,但我不明白如果您不使用它,为什么需要它。而且分组应该是不必要的。好吧,经过太多的思考,我让这项工作正常、顺利地进行,更多的超出范围将不起作用,只是在查询结束时进行限制,以下是我的答案:
select * from(
select tname,teacher.tid,grade from teacher
inner join
_view
on(_view.tid=teacher.tid)
)as D
where grade in(select grade from _view order by grade desc limit 2)
order by grade desc,tid;
谢谢大家的合作 考虑提供适当的DDL和/或SQLFIDLE以及所需的RESULTSET@flashdisk“是的,我显然是瞎的。”flashdisk。我很抱歉。我不明白你的意思