【发布时间】:2010-11-05 16:40:05
【问题描述】:
我有一个注释和列表数据库,其中包含三个关联表。 基本上,列表是笔记和其他列表的父级,而笔记可以是层次结构等大纲中其他笔记的父级。
我正在使用此查询来返回列表中的所有笔记以及每个笔记的子笔记数。
SELECT count(n2.note_id) as Num_Subnotes, _id, title, details
FROM NOTES
JOIN NOTES_IN_LISTS n1 ON NOTES._id=n1.note_id
LEFT JOIN NOTES_IN_NOTES n2 ON NOTES._id=n2.parent_note_id
WHERE n1.listId=12
GROUP BY NOTES._id
COLLATE NOCASE
这个查询工作得很好,但它有点矫枉过正。我不需要返回count(n2.note_id) as Num_Subnotes,因为我只使用该值来检查注释是否有任何子注释。本质上它是一个布尔值,其中 0 为假,> 0 为真。
在我看来,计算所有这些记录是浪费时间,因为我可以在找到第一个匹配值后返回 1。
有没有更有效的方法来检查上述查询中是否有count(n2.note_id)>0?
【问题讨论】: