[思源笔记使用心得] 分享一个拆书方法及一个对应的用于汇总所有引用当前文章的 SQL 语句

将思源笔记当做个人知识库真的挺好用, 我最近也发现了一种使用思源笔记拆书中一个处理概念或名称的方法, 以及一个与之对应的 SQL 语句, 现在分享给大家


拆书时处理概念/名称的方法

在阅读一本书时我们会接触很多新的概念名称, 因此我们可以在阅读过程中为所有遇到的新的概念/名称各自新建一个文章, 在文章的属性中标注命名/别名/备注

  • 命名可以设置为中文全称, 用于在搜索时精确查找, 用于虚拟引用匹配等
  • 别名可以设置为其他不常用的中文全称, 中文简称, 英文缩写等
  • 备注可以设置为英文全称

这一步可以使用快捷键 Alt+[ 快速创建一个关于该概念/名称的文章并建立引用

  • 通过该文章的反向链接面板可以很方便汇总关于该概念的一些零零碎碎的知识点
  • 但是这有一些问题, 通过鼠标悬停该概念的引用时浮窗无法查看反向链接, 因此我搞了如下的 SQL 语句, 用于在文章正文中汇总所有引用当前文章的内容

SQL 汇总所有引用当前文章的内容

SELECT
    *
FROM
    blocks as b0
WHERE
    (
        b0.id IN (
            SELECT
                r1.block_id
            FROM
                refs as r1
            WHERE
                r1.def_block_id = '.action{.id}'
        )
        AND (
            b0.type = 'h'
            OR b0.type = 'p'
            OR b0.type = 't'
        )
        AND b0.parent_id NOT IN (
            SELECT
                b1.id
            FROM
                blocks as b1
            WHERE
                b1.type = 'i'
        )
    )
    OR (
        b0.id IN (
            SELECT
                b2.parent_id
            FROM
                blocks as b2
            WHERE
                b2.id IN (
                    SELECT
                        r2.block_id
                    FROM
                        refs as r2
                    WHERE
                        r2.def_block_id = '.action{.id}'
                )
        )
        AND b0.type = 'i'
    )
  • 该 SQL 语句可以汇总引用当前文章的块及其次级块
    • 列表中引用时, 会汇总该列表项及其所有子项
    • 标题中引用时, 会汇总该标题与其内容, 以及该标题所有次级别的标题及内容
    • 段落中引用时, 会汇总引用所在段落
  • 在模板中可以使用 .action {.id } 获得当前文章的 ID
    • 注意: 模板中的 SQL 语句不支持换行
{{ SELECT * FROM blocks as b0 WHERE ( b0.id IN ( SELECT r1.block_id FROM refs as r1 WHERE r1.def_block_id = '.action{.id}' ) AND ( b0.type = 'h' OR b0.type = 'p' OR b0.type = 't' ) AND b0.parent_id NOT IN ( SELECT b1.id FROM blocks as b1 WHERE b1.type = 'i' ) ) OR ( b0.id IN ( SELECT b2.parent_id FROM blocks as b2 WHERE b2.id IN ( SELECT r2.block_id FROM refs as r2 WHERE r2.def_block_id = '.action{.id}' ) ) AND b0.type = 'i' ); }}

图示

image.png

4 操作
shuoying 在 2022-09-23 16:30:48 更新了该帖
shuoying 在 2022-03-07 10:52:25 更新了该帖
shuoying 在 2021-12-28 17:35:10 更新了该帖
shuoying 在 2021-12-27 23:56:09 更新了该帖

相关帖子

欢迎来到这里!

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

注册 关于
请输入回帖内容 ...
  • shuoying
    捐赠者 支持者 订阅者 作者

    该模板已经加入模板集市中的 MISC

    data/templates/MISC/Embed/汇总当前文档反链.md

    data/templates/MISC/Embed/sum-backlink-of-doc.md

  • 其他回帖
  • toney88 1 评论
    支持者 订阅者

    试了下,没成功,说不存在符合条件的内容块,不知是啥原因。

    如果不是使用模板插入的话, 需要将 .action{.id} 更换为文档的 ID
    shuoying
  • LearningLife

    nice