2012-11-23 83 views
1

我知道这是一个非常基本的问题,但我没有找到答案。具有特定列中的最大值的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行?它会返回两行吗?

回答

1

那么呢?

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

甚至没有一个max

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

任何这些将与最大值返回所有行。你可以玩here

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 

我也将确保这是应该有它的索引中的列,否则,你将永远在做一个表扫描。

相关问题