简体   繁体   中英

MySQL query record with max value in a specific column

I know that this must be a very basic question, but I've not found an answer.

Has the title says, I would like the query the record that holds the max value of a specific column.

I use the following code to achieve that:

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

I would like to know if there is an other way to achieve the same result (more parsimonious)? I know that SQL has a function MAX(column) but it's not working the way I want. I tried this:

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

and this:

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

What happen if the column_with_specific_max_value has 2 rows with the same max value? will it return both rows?

What about?

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

Or even without a max :

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

Any of those WILL return all rows with the max value. You can play with it here .

If your table has an auto-increment column to work with, you could do something like...

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

I would also ensure this is a column that SHOULD have an index on it, otherwise, you'll always be doing a table scan.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM