在更一般的意义上:是否有一个函数可以让我找到列X中的值是列的最大值的整行?
解决方法
不是具体的功能,没有.
子查询:
如果任何共享值相同,这种方法有可能返回一行以上:
SELECT x.* FROM YOUR_TABLE x WHERE x.column = (SELECT MAX(y.column) FROM YOUR_TABLE y)
自我加盟:
如果任何共享值相同,这种方法有可能返回一行以上:
SELECT x.* FROM YOUR_TABLE x JOIN (SELECT MAX(t.column) AS max_col FROM YOUR_TABLE t) y ON y.max_col = x.column
LIMIT / TOP:
SELECT TOP 1 x.* FROM YOUR_TABLE x ORDER BY x.column DESC
SELECT x.* FROM YOUR_TABLE x ORDER BY x.column DESC LIMIT 1
分析 – ROW_NUMBER():
这将返回一行,并且可以配置为提供每个分组的最高(或最低)值.但是,此功能是Oracle 9i,sql Server 2005和Postgresql 8.4.
SELECT x.* FROM (SELECT y.*,ROW_NUMBER() OVER (ORDER BY y.column DESC) AS rank FROM YOUR_TABLE y) x WHERE x.rank = 1
分析 – DENSE_RANK():
如果它们共享相同的值,则可以返回多个行,并且可以将其配置为提供每个分组的最高(或最低)值.但是,DENSE_RANK() OVER (ORDER BY y.column DESC) AS rank FROM YOUR_TABLE y) x WHERE x.rank = 1