You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Hasura中通过GraphQL实现按日期排序去重取各课程最新记录

实现方案

可以实现,Hasura 原生支持 PostgreSQL 的 DISTINCT ON 语法,直接通过 GraphQL 查询的内置参数就可以实现和你提供的 SQL 完全一致的效果。

示例查询代码

query getLatestCoursePerCode {
  course(
    distinct_on: [course_code]
    order_by: [
      { course_code: asc },
      { start_date: desc }
    ]
  ) {
    course_id
    course_code
    start_date
  }
}

参数逻辑说明

  • distinct_on: [course_code] 对应 SQL 中的 DISTINCT ON (course_code),指定按 course_code 去重,每个唯一的 course_code 仅返回一条记录
  • order_by 配置需要和 distinct_on 的字段顺序保持一致,后续追加的 start_date: desc 会让每个 course_code 分组下优先返回开课时间最新的记录,和你编写的 SQL 逻辑完全匹配

返回结果示例

查询返回的结果和你预期的输出一致:

{
  "data": {
    "course": [
      {
        "course_id": "uuid2",
        "course_code": "course_a",
        "start_date": "2021-09-01"
      },
      {
        "course_id": "uuid4",
        "course_code": "course_b",
        "start_date": "2021-09-01"
      }
    ]
  }
}

如果你的 Hasura 对接的不是 PostgreSQL 数据源,也可以通过预先创建数据库视图、或者自定义 SQL 函数的方式在 Hasura 中挂载对应查询接口实现相同效果。

内容的提问来源于stack exchange,提问作者AARon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 07:39:00