MySQL查询记录,在特定列中具有最大值

时间:2012-11-23 01:37:47

标签: php mysql

我知道这一定是一个非常基本的问题,但我没有找到答案。

标题是否显示,我希望查询包含特定列的最大值的记录。

我使用以下代码来实现:

SELECT * FROM `table_name` ORDER BY `column_with_specific_max_value` DESC LIMIT 1

我想知道是否有其他方法可以达到相同的结果(更简约)?我知道SQL有一个函数MAX(列),但它没有按我想要的方式工作。我试过这个:

SELECT * FROM `table_name` WHERE `column_with_specific_max_value`=MAX(`column_with_specific_max_value`)

和此:

SELECT *, MAX(`column_with_specific_max_value`) FROM `table_name`

如果column_with_specific_max_value有2行具有相同的最大值,会发生什么?它会返回两行吗?

2 个答案:

答案 0 :(得分:1)

怎么样?

select * from table1
where score in (select max(score) from table1)

甚至没有max

select * from table1
where score >= all (select score from table1)

其中任何一个将返回具有最大值的所有行。你可以玩它here

答案 1 :(得分:0)

如果你的表有一个自动增量列可以使用,你可以做类似的事情......

select
      YT3.*
   from
      ( select
              MAX( YT2.AutoIncColumn ) as ReturnThisRecordID
           from
              ( select max( YT1.WhatColumn ) as MaxColumnYouWant
                   from YourTable YT1 ) JustMax
                 Join YourTable YT2
                    on JustMax.MaxColumnYouWant = YT2.WhatColumn ) FinalRecord
      JOIN YourTable YT3
         on FinalRecord.ReturnThisRecordID = YT3.AutoIncColumn

我还要确保这是一个应该有索引的列,否则,你将始终进行表扫描。