2012-11-23 118 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 

我也將確保這是應該有它的索引中的列,否則,你將永遠在做一個表掃描。

相關問題