我是SQL新手,想知道是否有办法进一步优化我的查询。例如,我有一个包含学生姓名和成绩的表格,我想找到成绩最高的学生姓名。我来到了
SELECT name FROM students ORDER BY grade DESC
但返回所有名称。我想过使用LIMIT,但是对于前者来说,如果2名学生的成绩最高,我希望他们都能被退回。
有办法吗?
答案 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