Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 获取第一个和第二个最大值的sql where条件_Mysql_Sql - Fatal编程技术网

Mysql 获取第一个和第二个最大值的sql where条件

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

我正在处理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   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。我很抱歉。我不明白你的意思