1

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

有标题说,我想查询保存特定列最大值的记录。

我使用以下代码来实现:

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

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

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_value2 行具有相同的最大值会怎样?它会返回两行吗?

4

2 回答 2

1

关于什么?

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

甚至没有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.

于 2012-11-23T02:36:34.033 回答
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

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

于 2012-11-23T01:48:45.253 回答