我知道这一定是一个非常基本的问题,但我没有找到答案。
标题是否显示,我希望查询包含特定列的最大值的记录。
我使用以下代码来实现:
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行具有相同的最大值,会发生什么?它会返回两行吗?
答案 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
我还要确保这是一个应该有索引的列,否则,你将始终进行表扫描。