Mysql 如何根据SQL中某一列的最大值返回多行
假设我有一个表,其中有两个字段,name和number(我只是在这里提出我的问题前提),并假设我返回的行中有最大的数字。如果我使用命令Mysql 如何根据SQL中某一列的最大值返回多行,mysql,sql,Mysql,Sql,假设我有一个表,其中有两个字段,name和number(我只是在这里提出我的问题前提),并假设我返回的行中有最大的数字。如果我使用命令 SELECT name, MAX(number) FROM tablename; 但是,如果我有两个或更多这样的行,它们的最大数字,我如何修改上述查询以获得所有行 EDIT:我希望它返回可能找到最大值的所有行,而不仅仅是其中一行,并且它应该与正确的名称正确关联。使用where子句: select t.* from tablename t where t.num
SELECT name, MAX(number) FROM tablename;
但是,如果我有两个或更多这样的行,它们的最大数字,我如何修改上述查询以获得所有行
EDIT:我希望它返回可能找到最大值的所有行,而不仅仅是其中一行,并且它应该与正确的名称正确关联。使用
where
子句:
select t.*
from tablename t
where t.number = (select max(number) from tablename);
顺便说一下,您的查询只返回最大值。它为name
返回任意值,该值可以来自任何行
如果只需要一个值,则应使用:
select t.*
from tablename
order by number desc
limit 1;
您需要使用GROUPBY子句,以便将max number与适当的名称关联。希望这对你有用
select
name, max(number)
from
yourtable
group by
name
我希望它返回所有可能找到最大值的行,而不仅仅是其中一行,并且它应该与正确的名称正确关联。@SoulRayder。这就是第一个查询所做的。这将给出表中每个名称的最大值。这不是他所要求的吗?请参阅问题编辑中的“它应与正确的名称正确关联”语句。谢谢。他想要所有有最大值的名字。不是所有名称的最大值。那完全不同。哦,好的。那么我想@Gordon的第一个查询应该给出正确的结果,我想只需要在那里添加一个“selectdistinct t.*”。