在「查哪类对象、返回哪些字段」的基础上,用 filter 只保留满足条件的记录,用 order by 排序,用 limit 限制条数。
select 对象类型 {
属性1,
属性2
}
filter 条件
order by 排序
limit N
filter:布尔表达式,只保留结果为 true 的对象。
order by:按指定字段升序(asc)或降序(desc),不写默认为 asc;多字段用 then 连接。
limit:最多返回 N 条。
在 filter 后写布尔表达式,用 .属性 表示当前对象的属性。
|
写法 |
说明 |
|---|---|
|
|
状态为已确认 |
|
|
状态为草稿 |
|
|
多条件用 and / or 连接 |
示例:只查「已确认」的订单头。
select Order {
order_no,
order_date,
status
}
filter .status = 'confirmed'
结果示意:
[
{ "order_no": "ORD002", "order_date": "2023-10-02 00:00:00", "status": "confirmed" },
{ "order_no": "ORD003", "order_date": "2023-10-03 00:00:00", "status": "confirmed" }
]
|
写法 |
说明 |
|---|---|
|
|
按订单日期降序(新的在前) |
|
|
先按状态升序,再按订单日期降序 |
除了 limit,还可以用 offset 跳过前 N 条,实现分页。offset 和 limit 通常配合 order by 一起使用,以确保分页结果顺序一致。
select Order { order_no, order_date, status }
order by .order_date desc
offset 10
limit 10
上述查询跳过前 10 条(第 1 页),返回第 11~20 条(第 2 页)。
提示:offset 和 limit 也支持传参(可选参数),传空集时等同于不设该子句,方便在不确定是否分页时复用同一条查询:
select Order { order_no }
order by .order_date desc
offset <optional int64>$offset
limit <optional int64>$limit
每个对象都有内置的 id 属性(UUID 类型)。按 id 过滤时,字面量需用 <uuid>'...' 强转:
select Order { order_no, status }
filter .id = <uuid>'6c22bdf0-5c03-11ee-99ff-dfaea4d947ce'
查询「最近 10 条已确认订单」的订单号、日期、状态。
select Order {
order_no,
order_date,
status
}
filter .status = 'confirmed'
order by .order_date desc
limit 10
结果示意:
[
{ "order_no": "ORD003", "order_date": "2023-10-03", "status": "confirmed" },
{ "order_no": "ORD002", "order_date": "2023-10-02", "status": "confirmed" }
]
|
子句 |
作用 |
|---|---|
|
filter |
只保留满足条件的对象 |
|
order by … asc/desc, then … |
排序 |
|
offset N |
跳过前 N 条(分页) |
|
limit N |
最多返回 N 条 |
|
|
按 UUID 过滤 |
下一步可以在结果中带出关联对象(订单头带出订单行、或行带出头),见「三、带出关联数据:链接」。
回到顶部
咨询热线
