如何编写SQL查询获取数据表中对应最高评分的标题?
获取数据表中最高评分标题的SQL查询方法
以下是几种实用的实现方式,可根据数据库类型和需求选择:
方法一:子查询匹配最高评分
适用于所有主流数据库,能返回所有同属最高评分的标题:
SELECT title FROM your_table_name WHERE rating = (SELECT MAX(rating) FROM your_table_name);
说明:先通过子查询获取表中的最高评分值,再筛选出评分等于该值的标题记录。
方法二:窗口函数排名筛选
适用于支持窗口函数的数据库(如MySQL 8.0+、PostgreSQL、SQL Server等),灵活处理并列最高评分的场景:
SELECT title FROM ( SELECT title, rating, RANK() OVER (ORDER BY rating DESC) AS rank_num FROM your_table_name ) AS ranked_data WHERE rank_num = 1;
说明:
- 使用
RANK()函数按评分降序排名,所有并列最高评分的记录都会被标记为排名1,最终全部返回; - 如果只需返回任意一条最高评分记录,可将
RANK()替换为ROW_NUMBER()。
方法三:LIMIT取第一条(仅适用于最高评分唯一的场景)
适用于MySQL、PostgreSQL等支持LIMIT语法的数据库,仅返回一条最高评分记录:
SELECT title FROM your_table_name ORDER BY rating DESC LIMIT 1;
说明:按评分降序排序后取第一条记录,但如果存在多个并列最高评分,只会返回其中一条。
内容的提问来源于stack exchange,提问作者Misha Grabchak
相关产品推荐
相关产品推荐

