Skip to content

orderby 参数参考

orderBy (GraphQL) / $orderby (REST) 参数用于定义返回记录的排序规则。支持单字段和多字段排序,每个字段可独立指定升序或降序。

REST:$orderby

语法

?$orderby={field} [asc|desc],{field} [asc|desc],...

多字段以逗号分隔。默认方向为升序(asc),可以省略。

示例

bash
# 单字段升序(默认)
curl "http://localhost:5000/api/Book?\$orderby=title"

# 单字段降序
curl "http://localhost:5000/api/Book?\$orderby=year%20desc"

# 多字段:先按年份降序,再按标题升序
curl "http://localhost:5000/api/Book?\$orderby=year%20desc,title%20asc"

方向

方向说明
asc升序(默认,可省略)
desc降序(必须显式写出)

未指定方向时,默认为升序。降序必须显式写 desc

行为规则

规则说明
多字段排序先按第一个字段排序,值相同时按第二个字段,以此类推
排序字段不存在400 Bad Request
排序字段被排除400 Bad Request
存储过程不支持 $orderby
视图支持排序,规则与表相同

与筛选和分页组合

bash
curl "http://localhost:5000/api/Book?\$filter=year%20ge%202000&\$orderby=pages%20desc&\$first=10"

GraphQL:orderBy

语法

graphql
{
  books(orderBy: { field: DIRECTION, field: DIRECTION }) {
    items { ... }
  }
}

示例

graphql
# 单字段升序
{ books(orderBy: { title: ASC }) { items { title } } }

# 单字段降序
{ books(orderBy: { year: DESC }) { items { year } } }

# 多字段
{
  books(orderBy: { year: DESC, title: ASC }) {
    items { id title year }
  }
}

方向

方向说明
ASC升序(默认,可省略)
DESC降序

方向值必须大写。未指定方向默认 ASC

行为规则

规则说明
多字段排序按对象中的字段顺序依次应用
排序字段不存在返回 GraphQL 错误
存储过程不支持 orderBy
关系查询不能对嵌套实体的排序字段使用 orderBy

REST vs GraphQL 对照

操作RESTGraphQL
单字段升序?$orderby=titleorderBy: { title: ASC }
单字段降序?$orderby=year descorderBy: { year: DESC }
多字段?$orderby=year desc,title ascorderBy: { year: DESC, title: ASC }
默认方向升序ASC(等同于升序)

限定

限定说明
存储过程不支持排序——存储过程不生成分页筛选排序
聚合查询聚合查询不支持排序——结果只有一行或一个分组数组
字段名使用 API 层字段名(alias 如已配置),区分大小写

排序字段的索引建议

对于高频查询中频繁排序的字段,建议在数据库中创建对应索引以提升性能。多字段排序时,复合索引的效果优于多个单列索引。

下一步

  • filter — 条件筛选参数参考。
  • first — 分页大小参数参考。
  • after — 分页游标参数参考。

数据墙DBW 产品文档与开发指南。