使用max()函数获取具有最大值的行,但不要在结果中包含额外的最大值



注意:这与其他人用来结束这个问题的方法不同。我现在已经明确表示,我想使用MAX((函数,而不是它的替代方法。我很清楚,我可以使用其他变通方法,如ORDER BY+LIMIT等。这不是我想要的,所以不要再关闭这个问题,并将其与其他类似的问题推到一起,这些问题不是我想要寻找的。

我正试图运行一个查询,返回一个最大值为Y的行结果,但我不希望结果中包含额外的列。

我已经为SO搜索了一个解决方案,但没有找到任何符合我要求的解决方案。

示例查询:

SELECT *, MAX(Score)
FROM Table1

结果:

Name                       Score    MAX(Score)
Werribee Open Range Zoo      6          6

代码段示例http://sqlfiddle.com/#!5/52b4e/3

我的问题是,如果不包括最大(分数(列,我如何获得上述结果?

注意:我在Android Room库中使用这个查询,它限制了可以进行的查询类型。

您可以使用

SELECT * FROM Table1 ORDER BY score DESC LIMIT 1

但与您的原始版本一样,Werribee或Johannesburg是否返回将取决于查询优化器使用的底层索引。即你不能确定是哪一个。

如果你想要所有的都有最高的分数,那么你可以使用:-

SELECT * FROM Table1 WHERE score = (SELECT MAX(score) FROM Table1)

最新更新