2014-09-21 59 views
1

假设我有,其中有两个字段,(我只是提出我的问题的前提下这里)一张桌子和假设我将返回最大值为的行数。如果我使用命令如何基于最大值在其列中的一个SQL返回多行

SELECT name, MAX(number) FROM tablename; 

但是,如果我有一个最大的数字两个或两个以上这样的行,我是怎么修改上面的查询,以获得所有的行?

编辑:我希望它返回所有可能找到最大值的行,而不只是其中一行,它应该正确地与正确的名称相关联。

回答

2

您使用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; 
+0

我希望它返回所有可能找到最大值的行,而不只是其中一行,它应该正确地与正确的名称相关联。 – SoulRayder 2014-09-21 14:15:18

+0

@SoulRayder。 。 。这是第一个查询所做的。 – 2014-09-21 15:01:32

0

您需要通过条款,以与适当的名称相关联的最大数量使用一组。希望这对你有用。

select 
    name, max(number) 
from 
    yourtable 
group by 
    name 
+0

这将给出表中每个名字的最大值。 – lurker 2014-09-21 15:06:58

+0

这不是他要求的吗?在问题编辑中看到“它应该正确地与正确的名字相关联”的陈述。谢谢。 – Abhi 2014-09-21 15:09:19

+0

他希望所有名称都具有最大值。不是所有名称的最大值。这是完全不同的。 – lurker 2014-09-21 15:10:50

相关问题