求写个 SQL 查询代码,实在没法调教 ai 了

事情是这样滴。

我把所有双链文档和新建文档都放在一个叫全局 box 的笔记本里

我现在想要查询的东西是——

一个叫 inbox 的笔记本里,这个笔记本最近七天所创建的“双链文档”,即用[[这个符号创建出来的文档

可悲啊,查阅各方关于 SQL 教程,找 ai 写了好久也无效,俺想大概很可能绝对是我根本还没有完全理清思源 SQL 的概念(新手正在入门摸索中……),无法给出正确的指示语,所以 ai 也没法写出来。

另外,因为无知之故,我不清楚思源是支持这种查询需求的吗???

只能来求助真人大佬 😭

SELECT 
    b.content AS 文档内容,
    b.created AS 创建时间,
    b.id AS 文档块ID,
    b.box AS 所在笔记本
FROM 
    blocks b
WHERE 
    b.type = 'd'                    -- 文档类型
    AND b.box = 'inbox'             -- 在inbox笔记本中(请确保这是准确的笔记本ID)
    AND b.created >= strftime('%Y%m%d%H%M%S', 'now', '-7 days', 'localtime')  -- 最近7天创建
    AND EXISTS (
        SELECT 1 
        FROM refs r 
        WHERE r.def_block_id = b.id  -- 关联引用表,确认该文档被引用过(是双链文档)
    )
ORDER BY 
    b.created DESC;  -- 按创建时间倒序排列,最新的在最前面

这个是我查出来的,我认为应该提供 ID,可是笔记本没有 ID,只有文件夹有。其他问题就看不出来了……

  • 思源笔记

    思源笔记是一款隐私优先的个人知识管理系统,支持完全离线使用,同时也支持端到端加密同步。

    融合块、大纲和双向链接,重构你的思维。

    28444 引用 • 119764 回帖
  • Q&A

    提问之前请先看《提问的智慧》,好的问题比好的答案更有价值。

    11153 引用 • 50648 回帖 • 52 关注

相关帖子

被采纳的回答
  • 简单测了下, 应该是能用的

    1. 自己换一下, 那两个笔记本的 id, 还有日期
    2. 我理解你说的 [[符号创建的文档 就是指的被引用的文档, 先创建文档再引用, 也被算里面了的
      因为针对引用块, 目前我还不知道, 如何区分 被引用的文档 是 [[创建的文档, 还是先创建再引用的
    
    SELECT 
        b.content AS 文档标题,
        b.created AS 创建时间,
        b.id AS 文档块ID,
        b.box AS 所在笔记本id
    FROM 
        blocks b
    WHERE b.type = 'd'
        AND b.box = '20240309142721-xxwwivi'  -- 全局box的笔记本id
        AND b.created >= '20250805103406'  --7天前的日期
        AND b.id IN (
            SELECT r.def_block_id 
            FROM refs r
            WHERE r.def_block_id = r.def_block_root_id 
                AND r.box = '20250421112252-ggh3nu0' -- inbox的笔记本id
        )
    ORDER BY 
        b.created DESC; 
    
    

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...
  • PearlLin 1 1 评论
    1. SQL 小助手 - 链滴:已有的 SQL 提示词。
    2. box 有 id,在设置里。点击左上方的复制 id。
      入口见:image.png
    感谢大大,这个虽说木有生效,但还是很有用,我之前还保存过这个帖子,这个对于新人 SQL 入门太友好了-O-
    Floria233
  • 其他回帖
  • carlreel 1 2 评论

    要查询「指定笔记本」(notebook_id 已知)在「最近 7 天内新创建的、并且包含至少一个双链 [[ ]] 或 [[]] 的文档」,可以用以下 SQL:

    -- 查询指定笔记本(替换 your_notebook_id)最近 7 天内创建的、内容中包含双链的文档
    SELECT DISTINCT b.*
    FROM blocks b
    WHERE b.type = 'd'                          -- 只是文档块(不包含段落)
      AND b.box = 'your_notebook_id'            -- 指定笔记本的 ID,例如 '20210808180117-abc1234'
      AND b.created >= strftime('%Y%m%d%H%M%S', datetime('now', '-7 days'))  -- 最近7天创建的
      AND b.content || b.markdown || b.name REGEXP '\[\[.+?\]\]'  -- 内容或标题或markdown中包含 [[xxx]]
      -- 如果你想更严格,只看 markdown 字段里出现双链:
      -- AND b.markdown REGEXP '\[\[.+?\]\]'
    ORDER BY b.created DESC;
    

    更精准的写法(推荐)

    SiYuan 当前版本(截至 2025-11)中,文档是否包含双链最可靠的方式是检查 blocks 表中是否存在 [[ 链接,或者通过 refs 表看是否有定义块指向该文档。这里提供两种最常用的实现方式:

    方案一:正则匹配(最快,适合大多数情况)

    SELECT 
        b.id,
        b.path,
        substr(b.path, instr(b.path, '/', -1) + 1) AS filename,
        b.created,
        b.updated
    FROM blocks b
    WHERE b.type = 'd'
      AND b.box = '20210808180117-abc1234'              -- ← 这里改成你的笔记本 ID
      AND b.created >= strftime('%Y%m%d%H%M%S', datetime('now', '-7 days'))
      AND b.markdown REGEXP '\[\[[^\]]{1,200}?\]\]'       -- 至少有一个非空双链
    ORDER BY b.created DESC;
    

    方案二:通过 refs 表判断(100% 准确,但稍慢)

    SELECT DISTINCT b.*
    FROM blocks b
    WHERE b.type = 'd'
      AND b.box = '20210808180117-abc1234'              -- ← 改成你的笔记本 ID
      AND b.created >= strftime('%Y%m%d%H%M%S', datetime('now', '-7 days'))
      AND EXISTS (
        SELECT 1 
        FROM refs r 
        WHERE r.def_block_id = b.id                     -- 有人链到这个文档 = 它含有双链
      )
    ORDER BY b.created DESC;
    

    一键替换版(直接复制粘进去改 notebook_id 就行)

    -- 替换下面的笔记本 ID 即可
    WITH target_notebook AS (
        SELECT '20210808180117-abc1234' AS notebook_id   -- ← 修改这里
    )
    
    SELECT 
        b.id AS "文档ID",
        b.path AS "路径",
        strftime('%Y-%m-%d %H:%M', b.created, 'unixepoch', 'localtime') AS "创建时间",
        b.hpath AS "人类可读路径"
    FROM blocks b
    WHERE b.type = 'd'
      AND b.box = (SELECT notebook_id FROM target_notebook)
      AND b.created >= strftime('%Y%m%d%H%M%S', datetime('now', '-7 days'))
      AND b.markdown REGEXP '\[\[[^@\]]{1,200}?\]\]'   -- 过滤掉 [[@人名]] 这种提及
    ORDER BY b.created DESC;
    

    20210808180117-abc1234 换成你想查询的笔记本的实际 ID(在思源里点笔记本 → 属性 → ID 即可看到),执行后就能得到最近 7 天内新建的、含有双链的全部文档列表。

    需要同时查询多个笔记本时,只需要把 b.box IN ('id1','id2',...) 即可。

    我根据你的要求用 ai 生成的。但我没测试过,不知道能不能行。
    carlreel
    @carlreel 感谢,全都试了一遍可是木有生效啊啊啊,凭着我粗浅的认知,我感觉这个语法应该需要查询两个笔记本的 ID,或者指定 inboxor 全局 box 的路径,可是 AI 就是理解不了这个,老是给我写的就限定在一个笔记本里,……不,应该是我指令不对 😪
    Floria233
  • HugZephyr

    简单测了下, 应该是能用的

    1. 自己换一下, 那两个笔记本的 id, 还有日期
    2. 我理解你说的 [[符号创建的文档 就是指的被引用的文档, 先创建文档再引用, 也被算里面了的
      因为针对引用块, 目前我还不知道, 如何区分 被引用的文档 是 [[创建的文档, 还是先创建再引用的
    
    SELECT 
        b.content AS 文档标题,
        b.created AS 创建时间,
        b.id AS 文档块ID,
        b.box AS 所在笔记本id
    FROM 
        blocks b
    WHERE b.type = 'd'
        AND b.box = '20240309142721-xxwwivi'  -- 全局box的笔记本id
        AND b.created >= '20250805103406'  --7天前的日期
        AND b.id IN (
            SELECT r.def_block_id 
            FROM refs r
            WHERE r.def_block_id = r.def_block_root_id 
                AND r.box = '20250421112252-ggh3nu0' -- inbox的笔记本id
        )
    ORDER BY 
        b.created DESC; 
    
    
    1 回复
  • Floria233 2 评论

    感谢大佬,query 第一次有反应了,但它现在是这样的……image.png

    和我想的有点不一样啊,原来 query 调出来的都是那种文档,这里只有标题

    八过,有了这个就可以按图索骥,我再去找 AI 问下,希望有好结果,O(∩_∩)O 哈哈哈~

    文档? 你要把文档内容也显示出来么?
    HugZephyr
    @HugZephyr 参考大大你的代码,AI 帮忙写了个,调出的新查询表里多了个 hpath,那个可以悬浮查看文档,虽说跟我想的不太一样,但可以用了。
    Floria233

推荐标签 标签

  • Facebook

    Facebook 是一个联系朋友的社交工具。大家可以通过它和朋友、同事、同学以及周围的人保持互动交流,分享无限上传的图片,发布链接和视频,更可以增进对朋友的了解。

    4 引用 • 15 回帖 • 444 关注
  • gRpc
    11 引用 • 9 回帖 • 116 关注
  • Laravel

    Laravel 是一套简洁、优雅的 PHP Web 开发框架。它采用 MVC 设计,是一款崇尚开发效率的全栈框架。

    19 引用 • 23 回帖 • 770 关注
  • WiFiDog

    WiFiDog 是一套开源的无线热点认证管理工具,主要功能包括:位置相关的内容递送;用户认证和授权;集中式网络监控。

    1 引用 • 7 回帖 • 633 关注
  • jsoup

    jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址、HTML 文本内容。它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 jQuery 的操作方法来取出和操作数据。

    6 引用 • 1 回帖 • 517 关注
  • OpenCV
    15 引用 • 36 回帖 • 1 关注
  • Kubernetes

    Kubernetes 是 Google 开源的一个容器编排引擎,它支持自动化部署、大规模可伸缩、应用容器化管理。

    119 引用 • 54 回帖
  • OpenResty

    OpenResty 是一个基于 NGINX 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。

    17 引用 • 51 关注
  • 旅游

    希望你我能在旅途中找到人生的下一站。

    105 引用 • 908 回帖 • 1 关注
  • RYMCU

    RYMCU 致力于打造一个即严谨又活泼、专业又不失有趣,为数百万人服务的开源嵌入式知识学习交流平台。

    4 引用 • 6 回帖 • 56 关注
  • Google

    Google(Google Inc.,NASDAQ:GOOG)是一家美国上市公司(公有股份公司),于 1998 年 9 月 7 日以私有股份公司的形式创立,设计并管理一个互联网搜索引擎。Google 公司的总部称作“Googleplex”,它位于加利福尼亚山景城。Google 目前被公认为是全球规模最大的搜索引擎,它提供了简单易用的免费服务。不作恶(Don't be evil)是谷歌公司的一项非正式的公司口号。

    51 引用 • 200 回帖 • 2 关注
  • 运维

    互联网运维工作,以服务为中心,以稳定、安全、高效为三个基本点,确保公司的互联网业务能够 7×24 小时为用户提供高质量的服务。

    151 引用 • 257 回帖 • 1 关注
  • Openfire

    Openfire 是开源的、基于可拓展通讯和表示协议 (XMPP)、采用 Java 编程语言开发的实时协作服务器。Openfire 的效率很高,单台服务器可支持上万并发用户。

    6 引用 • 7 回帖 • 133 关注
  • 强迫症

    强迫症(OCD)属于焦虑障碍的一种类型,是一组以强迫思维和强迫行为为主要临床表现的神经精神疾病,其特点为有意识的强迫和反强迫并存,一些毫无意义、甚至违背自己意愿的想法或冲动反反复复侵入患者的日常生活。

    15 引用 • 161 回帖 • 1 关注
  • 30Seconds

    📙 前端知识精选集,包含 HTML、CSS、JavaScript、React、Node、安全等方面,每天仅需 30 秒。

    • 精选常见面试题,帮助您准备下一次面试
    • 精选常见交互,帮助您拥有简洁酷炫的站点
    • 精选有用的 React 片段,帮助你获取最佳实践
    • 精选常见代码集,帮助您提高打码效率
    • 整理前端界的最新资讯,邀您一同探索新世界
    488 引用 • 384 回帖
  • Ruby

    Ruby 是一种开源的面向对象程序设计的服务器端脚本语言,在 20 世纪 90 年代中期由日本的松本行弘(まつもとゆきひろ/Yukihiro Matsumoto)设计并开发。在 Ruby 社区,松本也被称为马茨(Matz)。

    7 引用 • 31 回帖 • 299 关注
  • CAP

    CAP 指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可兼得。

    12 引用 • 5 回帖 • 660 关注
  • Postman

    Postman 是一款简单好用的 HTTP API 调试工具。

    4 引用 • 3 回帖
  • Ngui

    Ngui 是一个 GUI 的排版显示引擎和跨平台的 GUI 应用程序开发框架,基于
    Node.js / OpenGL。目标是在此基础上开发 GUI 应用程序可拥有开发 WEB 应用般简单与速度同时兼顾 Native 应用程序的性能与体验。

    7 引用 • 9 回帖 • 430 关注
  • WebClipper

    Web Clipper 是一款浏览器剪藏扩展,它可以帮助你把网页内容剪藏到本地。

    3 引用 • 9 回帖 • 3 关注
  • 机器学习

    机器学习(Machine Learning)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。

    78 引用 • 37 回帖
  • ngrok

    ngrok 是一个反向代理,通过在公共的端点和本地运行的 Web 服务器之间建立一个安全的通道。

    7 引用 • 63 回帖 • 668 关注
  • 负能量

    上帝为你关上了一扇门,然后就去睡觉了....努力不一定能成功,但不努力一定很轻松 (° ー °〃)

    89 引用 • 1251 回帖 • 376 关注
  • 学习

    “梦想从学习开始,事业从实践起步” —— 习近平

    176 引用 • 544 回帖
  • 工具

    子曰:“工欲善其事,必先利其器。”

    308 引用 • 773 回帖
  • 小薇

    小薇是一个用 Java 写的 QQ 聊天机器人 Web 服务,可以用于社群互动。

    由于 Smart QQ 从 2019 年 1 月 1 日起停止服务,所以该项目也已经停止维护了!

    35 引用 • 468 回帖 • 768 关注
  • Vditor

    Vditor 是一款浏览器端的 Markdown 编辑器,支持所见即所得、即时渲染(类似 Typora)和分屏预览模式。它使用 TypeScript 实现,支持原生 JavaScript、Vue、React 和 Angular。

    386 引用 • 1892 回帖 • 1 关注