rank是一个t_sql函数,rank()函数返回指定字段的值在结果集分区中的排名。指定字段值的排名是相关行之前的排名加一。
rank()over([partition_by_clause]orderby子句)partition_by_clause将from子句生成的结果集划分为应用于rank函数的分区。
order_by_claus
select*fromtest(这里是表名)orderbyid(这里是根据什么行)desc(desc表示降序)limit0,10;(零后搜索十)按降序,出来一行,括号内是解释。
你的信息不足以让我知道如何给你答案。很明显,如果第一名并列,第二名并列,上面有top的人给出的答案都是错的。
所以,我建议你给出表格结构,我好帮你分析问题。
或者你可以试试这个:
select*fromtbl_scorewherescore
(
从分数不在(
按分数desc从tbl_score顺序中选择不同的前1名分数
)按分数排序desc
)
我在自己的临时表上测试了一下,应该足以满足第二名的查询,包括并列第二的所有人。
不知道这是不是楼主想要的?
access数据库不支持rank、dense_rank、rownumber等排名函数,只能通过应用端编程求解获得排名。您可以使用访问表单或访问报告来显示排名。代码思想是sql语句检索中文带gt90标记的记录并降序排列,然后循环比较记录集中的得分,从1开始对记录集的每一行进行编号。如果下一条记录的得分与上一条记录的得分不同,则在该数字上加1,否则该数字将保持不变,直到记录集结束,从而完成rank函数的排序规则。