-
SQL 嵌入查询的致命缺陷:递归死循环与无法实现“原子级”内容聚合
2025-12-17 18:31感谢 JeffreyChen 提供的这个 SQL 方案,非常简洁明了。👍 👍 👍
完整方案如下
SELECT * FROM blocks b WHERE b.root_id = '20251214091335-y0pudi9' AND ( b.ial LIKE '%color%' OR EXISTS ( SELECT 1 FROM spans s WHERE s.block_id = b.id AND s.ial LIKE '%color%' ) )用的时候改一下查询文档的 ID 就行
并且一定要把嵌入块设置 调节为:仅显示标题块。否则的话还是会查询到没有标记的块。
PS:这个仅显示标题块 让你难以理解意思。很神奇的一个设置。

最后,我的几个 JS 方案也是可行的。按需选取。
-
SQL 嵌入查询的致命缺陷:递归死循环与无法实现“原子级”内容聚合
2025-12-17 09:57我测试了一下,你这个查询还是有问题。
- 一开始我直接在主空间进行测试,你的代码还是老问题。没解决。但是你的截图很明显是正确的结果,我尝试排查问题
- 我为了测试,新建一个工作空间,那新建空间里面,导入你的 sy.zip 查询没有问题。这个 SQL 语法在新建空间没有问题。
- 但是我把这个查询代码在我主空间运行 就还是老问题。
- 为了排查问题,我在主空间把所有插件关闭,主题切换到默认白天,所有代码 css js 关闭。重新启动之后,还是无法实现在新建空间的效果。
- 我把主空间的测试文档导出 导入到 新建空间,发现这个问题不会修复。不会因为到了新建空间而修复。
- 我把新建空间的看起来没问题的测试文档导入到主空间,发现问题了,旧的查询块刷新后 还是没问题。但是一旦我用和旧的查询块 一样的代码,新建查询进行测试的时候,问题复现了。 哪怕把旧查询删除,也还是无用。录制视频如下:
- 思源版本当前版本 v3.5.0
- 重新在新建空间进行 SQL 代码测试,问题出现。最早的正常情况无法复现 😭
- 我把我的思源文档导出 里面有截图,附上。查询带颜色的块主空间.sy.zip
截图以及视频如下:


-
SQL 嵌入查询的致命缺陷:递归死循环与无法实现“原子级”内容聚合
2025-12-16 23:17
这个 SQL 代码不行哈。还是会出现我帖子里说的问题:会把不相关的给查询出来。
SELECT * FROM blocks WHERE ial LIKE '%color%' UNION SELECT b.* FROM blocks b INNER JOIN spans s ON b.id = s.block_id WHERE s.ial LIKE '%color%' -
SQL 嵌入查询的致命缺陷:递归死循环与无法实现“原子级”内容聚合
2025-12-14 13:52天哪!我成了 我成了!!!!!!
用的是 query view 代码如下

只查询标绿
//!js const query = async () => { // 1. 初始化 (严格照抄你的例子2) let dv = Query.DataView(protyle, item, top); const currentId = Query.root_id(dv.protyle); // 2. 目标颜色 (绿色) const targetColor = "var(--b3-card-success-background)"; // 3. SQL 查询 const sql = ` SELECT * FROM blocks WHERE root_id = '${currentId}' AND ial LIKE '%${targetColor}%' ORDER BY sort ASC `; let blocks = await Query.sql(sql); // 4. 渲染逻辑 if (blocks.length === 0) { dv.addmd("> *No highlights found.*"); } else { // 【关键修正】 // 不用 dv.header,直接用 Markdown 语法写标题 // 遍历 blocks,只提取 aslink (原子链接),拼接成无序列表 const mdContent = "### 🟢 S1 核心要义聚合\n" + blocks.map(b => `- ${b.aslink}`).join('\n'); dv.addmd(mdContent); } dv.render(); } return query();标绿中间划线隔开
//!js // 1. 定义单行渲染模板 (参考你的例子2) // 这里只取 b.aslink,确保不带出子节点 const row = (b) => ` {{{col **${b.aslink}** {: style="flex: 1;" } }}} {: style="border-bottom: 1px dashed var(--b3-theme-on-surface-light); padding: 8px 0;" } `.trim(); const query = async () => { let dv = Query.DataView(protyle, item, top); const currentId = Query.root_id(dv.protyle); const targetColor = "var(--b3-card-success-background)"; const sql = ` SELECT * FROM blocks WHERE root_id = '${currentId}' AND ial LIKE '%${targetColor}%' ORDER BY sort ASC `; let blocks = await Query.sql(sql); if (blocks.length === 0) { dv.addmd("> *当前文档无绿色标记*"); } else { // 【关键修正】用 addmd 渲染标题 + 内容 // 标题 dv.addmd("### 🟢 S1 核心 Dashboard"); // 内容:把所有块通过 row 函数处理,然后用换行符连接 dv.addmd(blocks.map(row).join('\n')); } dv.render(); } return query();全色块查询/信息 成功 警告 错误汇总
//!js // 1. 定义颜色配置 (用于识别和上色) const colorMap = { "success": { bg: "var(--b3-card-success-background)", border: "var(--b3-card-success-color)" }, "warning": { bg: "var(--b3-card-warning-background)", border: "var(--b3-card-warning-color)" }, "error": { bg: "var(--b3-card-error-background)", border: "var(--b3-card-error-color)" }, "info": { bg: "var(--b3-card-info-background)", border: "var(--b3-card-info-color)" } }; // 2. 定义单行渲染模板 const row = (b) => { // 自动检测当前块属于哪种颜色,决定边框颜色 let borderColor = "var(--b3-theme-on-surface-light)"; // 默认灰色 // 遍历查找匹配的颜色 for (let type in colorMap) { if (b.ial && b.ial.includes(colorMap[type].bg)) { borderColor = colorMap[type].border; break; } } // 渲染:只取 aslink (原子链接),并加上对应颜色的底边框 return ` {{{col **${b.aslink}** {: style="flex: 1;" } }}} {: style="border-bottom: 2px solid ${borderColor}; padding: 6px 0;" } `.trim(); }; const query = async () => { let dv = Query.DataView(protyle, item, top); const currentId = Query.root_id(dv.protyle); // 3. 构建 SQL 的 OR 条件 // 生成类似: ial LIKE '%success%' OR ial LIKE '%warning%' ... const conditions = Object.values(colorMap) .map(c => `ial LIKE '%${c.bg}%'`) .join(' OR '); const sql = ` SELECT * FROM blocks WHERE root_id = '${currentId}' AND (${conditions}) ORDER BY sort ASC `; let blocks = await Query.sql(sql); if (blocks.length === 0) { // 如果没数据,显示灰色提示 dv.addmd("> *当前文档无 S1 标记 (绿/黄/红/蓝)*"); } else { // 标题 dv.addmd("### 🌈 S1 全光谱 Dashboard"); // 渲染列表 dv.addmd(blocks.map(row).join('\n')); } dv.render(); } return query();感谢大家建议
从 SQL 里面出来了,SQL 可能做不到这点。【如果 SQL 能做到的话麻烦安利一下哈 毕竟 js 有点复杂的样子。】
js 做到了。
-
SQL 嵌入查询的致命缺陷:递归死循环与无法实现“原子级”内容聚合
2025-12-14 13:39怎么说呢?我觉得挺清晰的。😂
我的要求就是把一个文档里面,我所有标绿的块都给筛选出来。就这么简单的需求。
【使用场景:现在用 AI 很多,AI 很多分析,我只想要把我重视的信息汇总起来。但是我又不想把过程文档全部删除。我希望我看到一些信息很好,就直接 alt+X 标绿,然后在文档末尾处使用查询 汇总起来。
为何是 alt+X 呢?因为只有 alt+X 是思源原生支持跨块选中一键标绿的。其他的都有些麻烦。】但是实际上尝试用 SQL 查询,就总是会筛选到上级标题 下级节点。没有标绿的都会被筛选到。搞了十几个代码总是无法解决,头疼。
搞替代方案的话 你说的块自定义标注是一个 标签是一个 ,标记后 用 汇总行级元素 也是一个方法。 就是感觉差点意思。
感觉理论上思源用 SQL 语法可以直接查询,很简单的样子,但是却一直搞不定。头疼。 -
SQL 嵌入查询的致命缺陷:递归死循环与无法实现“原子级”内容聚合
2025-12-14 12:49感谢各位老哥的批评,确实是我犯懒了,直接把 AI 生成的总结发出来,没考虑到大家的阅读体验,抱歉。
我的核心需求非常简单: 我习惯用 Alt+X 给大纲列表里的某一行(列表项)上色标记重点。 我想在文档顶部,用 SQL 把本文档内所有标了颜色的这一行字汇总展示出来。
遇到的卡点:
用 SQL 查 ial 颜色属性,因为我标的是列表项(容器),思源会强制把这一行下面 【或者上面】的所有子节点(笔记正文)全显示出来,导致结果很乱。
我想实现:“只显示标绿的那一行字,不要显示它下面的子内容”。
请问如果不使用插件,原生 SQL 有办法做到“只渲染父级内容”吗? 如果原生做不到,我就去研究大家推荐的 Query View 和关键信息导航插件了。感谢指路! -
SQL 语法求助:查询在 2025 年 9 月 2 号创建的笔记,存在文档丢失
2025-11-03 09:17有 9 月的快照。然后怎么处理?直接回滚的话会丢失这几个月创建的内容吗?
但是回滚之后,假设找到了这个文档,然后把这个文档复制粘贴到现在的时间点吗?
-
SQL 语法求助:查询在 2025 年 9 月 2 号创建的笔记,存在文档丢失
2025-11-03 08:49试了,不行,因为只有 30 天历史最早到 10 月 4 号。最早的中间的都找不到。这可能意味着在此之前就丢失了。。。
-
SQL 语法求助:查询在 2025 年 9 月 2 号创建的笔记,存在文档丢失
2025-11-02 23:00今天要找的文章我正好是截图保存在手机。所以只是思源里面找不到了。
主要是我不知道是否就一个文件丢失了,我是今天有事想起来要用去搜才发现找不到。这个问题就难搞了。【憋屈,不知道哪里使劲 😳 】
用的是官方同步啊,没想到出现这个问题。因为最近同步没异常,数据快照也找不到异常点。
你那个备份软件我研究一下,害 。。醉了
-
SQL 语法求助:查询在 2025 年 9 月 2 号创建的笔记,存在文档丢失
2025-11-02 22:54。。。你怎么会这么说。我是完全记得内容。文章完整截图还在我手机里面保存着。毕竟是付费文章。付费日期,截图,当天直接输入思源。
我搜了好多个关键词。都找不到。。。
-
复制 Markdown 无法识别星号前的符号
2025-10-23 12:07见录屏。
正常的 Ctrl+C 复制粘贴不行。看看是不是你们说的转义的问题
我就是想要能正常 Ctrl+C 复制粘贴,保留格式。
这个就是常规操作。
不管是不是转义的问题,这个经常用的常规操作得处理。
这么多人用 AI,一旦复制都会遇到这样的情况。
-
复制 Markdown 无法识别星号前的符号
2025-10-22 10:26但是为什么 粘贴之后,我在第二组** 后添加空格,也还是无法加粗?
情况又不太一样。

现在 AI 用的多,每次把 AI 的回答 Markdown 复制到思源之后,都有一些无法识别的情况。后续调整也非常麻烦。
这个情况太经常出现了,不知道有什么解决方法。
-
太离谱,更新帖子,回复帮助别人扣积分
2025-10-16 20:14 -
传说哥! 10.19 号更新, 终极标签解决方案!! 极大的增加了可玩性... 爽死了..
2025-10-15 14:32
点击感谢就是打赏。
这是积分规则

https://ld246.com/search?q=%E7%A7%AF%E5%88%86&ot=true
积分问题之前也有群友反馈,感觉一直不受重视。导致一个社群没有人愿意持续更新精品帖子,不知道怎么想的
也没给一个解决方案。
-
edge 浏览器无法使用思源剪藏
2025-10-07 16:20不仅插件有卸载重装过,甚至浏览器都卸载重装过。
重装无用,最新版本。
并且插件是英文显示的,并无魔法。而其他 Chrome 或星愿都是中文。
层考虑是否是地区的问题,用魔法移动到国外之后,edge 浏览器就无法下载思源剪藏插件:显示下载失败
而在国内能正常下载安装,但是却无法正常使用。


-
一天淬一刃!我上架了挂件:汇总行级元素
2025-10-07 09:13- 目前的汇总只是把标记的字符给汇总了。而不是把整个块进行汇总。建议:提供汇总局部元素,汇总对应的块 的选择项:
- 使用背景有时候,我们对一句话里面的关键词进行标记。而那一段话都是背景有效的,单独的关键词摘出来是无效的。
- 建议能支撑对于有背景颜色的筛选汇总
- 背景:因为 alt+X 可以把整个块进行 背景高亮。而无需局部选中,是思源比较好用的功能。如果想要汇总一些重点,在文章中直接把对应的小块进行 alt+X 背景色标记。然后在结尾处进行汇总,那么这整个过程就是一条龙了。而如果按照目前的情况,想要使用汇总的话,先进行标记。而一般的标记功能都需要先选中文字然后进行,不如直接 alt+X 直接标记整个块直接方便。
- 目前的汇总只是把标记的字符给汇总了。而不是把整个块进行汇总。建议:提供汇总局部元素,汇总对应的块 的选择项:












点击感谢就是打赏。



