我是 SQL 新手,想知道是否有办法进一步完善我的查询。例如,我有一个包含学生姓名和成绩的表格,我想找到成绩最高的学生姓名。我来了
SELECT name FROM students ORDER BY grade DESC
但这会返回所有名称。我想过使用 LIMIT,但例如,如果 2 个学生的最高分相同,我希望他们都被退回。
有办法吗?
我认为这将适用于 sqlite。
select name from students where grade = (select max(grade) from students);
没有提到 name 是否是主键,所以最好像这样使用它(不假设 name 为 PK):
select distinct name from students where grade = (select max(grade) from students);
你也可以这样做:)
WITH CTE AS
(
SELECT
Name,
Grade,
DENSE_RANK() OVER (ORDER BY Grade desc) AS BestGrade
FROM
students
) SELECT * FROM CTE WHERE BestGrade = 1