-- random-task-hpath 这里的注释不要删除且必须再第一行且必须--开头且不能有空格
SELECT * FROM blocks
WHERE (
-- 👇这里可以添加更多路径,可在目录右键复制可读路径获取
hpath like '%/daily note/2024/12/111%'
OR hpath like '%/daily note/2024/12/111%'
)
AND type = 'i'
AND subtype = 't'
-- 这里可以修改任务状态👇,注意[X]中的X必须是大写,[ ]中有个英文空格,可以复制这注释里的
AND markdown like '%* [ ] %' || TRIM(fcontent) || '%'
ORDER BY RANDOM()
LIMIT 1;
SQL2:在列表内随机索引单个任务项
sql
-- radmom-task-list 这里的注释不要删除且必须再第一行且必须--开头且不能有空格
WITH RECURSIVE Descendants AS (
-- 非递归部分,这是起始查询,选择指定id的初始记录
SELECT *
FROM blocks
WHERE id in(
-- 👇这里可以添加更多列表id
'20241222170944-o65g6ol',
'20241222170955-k3mt4vd'
)
UNION ALL
-- 递归部分,将子记录不断加入结果集
SELECT b.*
FROM blocks b
JOIN Descendants d ON b.parent_id = d.id
)
SELECT * FROM Descendants
WHERE type = 'i'
AND subtype = 't'
-- 这里可以修改任务状态👇,注意[X]中的X必须是大写,[ ]中有个英文空格,可以复制这注释里的
AND markdown like '%* [ ] %' || TRIM(fcontent) || '%'
ORDER BY RANDOM()
LIMIT 1;
如果需要筛选 [X] 和 [ ] 状态可以按照下面的方式添加到条件里即可。
添加到这两个条件后面就行
WHERE type = 'i'
AND subtype = 't'
比如
sql
select * from blocks
-- (其他SQL)
WHERE type = 'i'
AND subtype = 't'
-- 匹配已选中的
AND markdown like '* [X]%'
-- 匹配未选中的
AND markdown like '* [ ]%'
-- 以上SQL一般没有问题,仅匹配第一个任务,能有效避免误选子任务
-- 如果有问题,也可以用下面的方式,更安全,但稍麻烦
-- 匹配已选中的,注意[X]中的X必须是大写,[ ]中有个英文空格
AND markdown like '%* [X] %' || TRIM(fcontent) || '%'
-- 匹配未选中的,注意[X]中的X必须是大写,[ ]中有个英文空格
AND markdown like '%* [ ] %' || TRIM(fcontent) || '%'
ORDER BY RANDOM()
LIMIT 1;