如何进一步指定sqlite查询

时间:2012-08-09 22:35:53

标签: sql sqlite

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

SELECT name FROM students ORDER BY grade DESC

但返回所有名称。我想过使用LIMIT,但是对于前者来说,如果2名学生的成绩最高,我希望他们都能被退回。

有办法吗?

3 个答案:

答案 0 :(得分:6)

我认为这适用于sqlite。

select name from students where grade = (select max(grade) from students);

答案 1 :(得分:1)

没有提到名称是否为主键,因此最好像这样使用它(不假设名称为PK):

select distinct name from students where grade = (select max(grade) from students);

答案 2 :(得分:0)

您还可以执行以下操作:)

WITH CTE AS
(
    SELECT
    Name,
    Grade,
    DENSE_RANK() OVER (ORDER BY Grade desc) AS BestGrade
FROM
    students
) SELECT * FROM CTE WHERE BestGrade = 1