SQL:如何选择具有最大值和另一个条件的行?

时间:2016-07-08 11:20:50

标签: sql sqlite

我想选择具有最高分数的行,但由于可以有多行具有最大值,所以我希望该行具有最高值,而另一列。请考虑此列中的值不同。如何为此编写SQLite查询。这是我的想法,直到现在:

SELECT NAME, MAX(SCORE) FROM PLAYERS ORDER BY SECOND_COLUMN;

但它似乎不起作用。我怎么做?请帮忙。 感谢。

3 个答案:

答案 0 :(得分:1)

如果我理解正确,您可以使用order bylimit执行您想要的操作:

select p.*
from players p
order by score desc, second_column
limit 1;

您的查询不起作用,因为MAX(SCORE)使其成为聚合查询。但是,没有GROUP BY,因此NAME是语法错误。此外,由于聚合,SECOND_COLUMN中的ORDER BY未定义。

答案 1 :(得分:0)

SELECT NAME, MAX(SCORE) FROM PLAYERS GROUP BY NAME ORDER BY MAX(SCORE);

答案 2 :(得分:0)

您可以执行以下操作:

SELECT NAME, SCORE 
FROM PLAYERS 
WHERE SCORE>=(SELECT MAX(SCORE) FROM PLAYERS)
ORDER BY SECOND_COLUMN DESC
LIMIT 1

这将获得具有相同分数的所有名称,然后按第二列排序,并且仅返回最大值