1

我是 SQL 新手,想知道是否有办法进一步完善我的查询。例如,我有一个包含学生姓名和成绩的表格,我想找到成绩最高的学生姓名。我来了

SELECT name FROM students ORDER BY grade DESC

但这会返回所有名称。我想过使用 LIMIT,但例如,如果 2 个学生的最高分相同,我希望他们都被退回。

有办法吗?

4

3 回答 3

6

我认为这将适用于 sqlite。

select name from students where grade = (select max(grade) from students);
于 2012-08-09T22:50:37.070 回答
1

没有提到 name 是否是主键,所以最好像这样使用它(不假设 name 为 PK):

select distinct name from students where grade = (select max(grade) from students);
于 2013-04-24T09:03:10.823 回答
0

你也可以这样做:)

WITH CTE AS
(
    SELECT
    Name,
    Grade,
    DENSE_RANK() OVER (ORDER BY Grade desc) AS BestGrade
FROM
    students
) SELECT * FROM CTE WHERE BestGrade = 1
于 2013-04-24T08:48:16.223 回答