SQL检查是否存在关联?

SQL检查是否存在关联?,sql,android,sqlite,Sql,Android,Sqlite,我有一个记录和列表的数据库,有三个关联表。 基本上,列表是注释和其他列表的父级,注释可以是类似于大纲的层次结构中其他注释的父级 我使用此查询返回列表中的所有注释以及每个注释的子注释数 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._

我有一个记录和列表的数据库,有三个关联表。 基本上,列表是注释和其他列表的父级,注释可以是类似于大纲的层次结构中其他注释的父级

我使用此查询返回列表中的所有注释以及每个注释的子注释数

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\u id)作为Num\u Subnotes,因为我只使用该值来检查注释是否有任何子注释。本质上,它是一个布尔值,其中0为假,>0为真

在我看来,计算所有这些记录都是浪费时间,因为在找到第一个匹配值后,我只能返回1

在上述查询中,是否有更有效的方法检查
计数(n2.note_id)>0

SELECT EXISTS (SELECT 1 FROM NOTES_IN_NOTES n2 WHERE n2.parent_note_id = n0._id) as Has_Subnotes, n0._id, n0.title, n0.details
FROM NOTES n0
INNER JOIN NOTES_IN_LISTS n1 ON n0._id = n1.note_id
WHERE n1.listId = 12
COLLATE NOCASE
我已经有一段时间没有使用sqlite了,但关键是使用
EXISTS
(如果支持的话)以及子查询。如果不是这样,您可能需要在
Has\u Subnotes
列中使用
COALESCE
,并在\u NOTES表中对
NOTES\u执行
左连接,但在这种情况下,您不需要使用
分组依据

我已经有一段时间没有使用sqlite了,但关键是使用
EXISTS
(如果支持的话)以及子查询。如果不是这样,您可能需要在
Has\u Subnotes
列中使用
COALESCE
,并在\u NOTES
表中对
NOTES\u执行
左连接,但在这种情况下,您不需要使用
分组依据