全部文档
文档中心DeepModel功能DeepQL常用语法与使用技巧二、缩小范围:条件、排序、条数

二、缩小范围:条件、排序、条数

在「查哪类对象、返回哪些字段」的基础上,用 filter 只保留满足条件的记录,用 order by 排序,用 limit 限制条数。

Copy
select 对象类型 {
    属性1,
    属性2
}
filter 条件
order by 排序
limit N
  • filter:布尔表达式,只保留结果为 true 的对象。

  • order by:按指定字段升序(asc)或降序(desc),不写默认为 asc;多字段用 then 连接。

  • limit:最多返回 N 条。

filter 后写布尔表达式,用 .属性 表示当前对象的属性。

写法

说明

.status = 'confirmed'

状态为已确认

.status = 'draft'

状态为草稿

.status = 'confirmed' and .order_date >= <cal::local_datetime>'2023-10-01 00:00:00'

多条件用 and / or 连接

示例:只查「已确认」的订单头。

Copy
select Order {
    order_no,
    order_date,
    status
}
filter .status = 'confirmed'

结果示意:

Copy
[
  { "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" }
]

写法

说明

order by .order_date desc

按订单日期降序(新的在前)

order by .status asc then .order_date desc

先按状态升序,再按订单日期降序

除了 limit,还可以用 offset 跳过前 N 条,实现分页。offset 和 limit 通常配合 order by 一起使用,以确保分页结果顺序一致。

Copy
select Order { order_no, order_date, status }
order by .order_date desc
offset 10
limit 10

上述查询跳过前 10 条(第 1 页),返回第 11~20 条(第 2 页)。

提示:offsetlimit 也支持传参(可选参数),传空集时等同于不设该子句,方便在不确定是否分页时复用同一条查询:

Copy
select Order { order_no }
order by .order_date desc
offset <optional int64>$offset
limit <optional int64>$limit

每个对象都有内置的 id 属性(UUID 类型)。按 id 过滤时,字面量需用 <uuid>'...' 强转:

Copy
select Order { order_no, status }
filter .id = <uuid>'6c22bdf0-5c03-11ee-99ff-dfaea4d947ce'

查询「最近 10 条已确认订单」的订单号、日期、状态。

Copy
select Order {
    order_no,
    order_date,
    status
}
filter .status = 'confirmed'
order by .order_date desc
limit 10

结果示意:

Copy
[
  { "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 条

.id = <uuid>'...'

按 UUID 过滤

下一步可以在结果中带出关联对象(订单头带出订单行、或行带出头),见「三、带出关联数据:链接」。

回到顶部

咨询热线

400-821-9199

我们使用 ChatGPT,基于文档中心的内容以及对话上下文回答您的问题。

ctrl+Enter to send