注意:这与其他人用来结束这个问题的方法不同。我现在已经明确表示,我想使用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)