【发布时间】:2018-06-03 17:06:09
【问题描述】:
我有一个可以自我引用的数据库表“类别”。如果 self-reference 为 null,则它是顶级类别(无父类别)。如果它指向另一个类别,则它是给定类别的子类别。
现在我正在尝试设置查询,该查询返回具有给定父类别 ID 的所有子类别。类似于以下内容(Android Room 语法):
"SELECT * FROM category WHERE parent_id = :parentId"
如果 parentId == null,则此查询不返回任何内容,但我希望它返回 parentId == null 的所有类别(即顶级类别)。有一个查询
"SELECT * FROM category WHERE parent_id IS NULL"
我可以成功获取父类别,但显然它不适用于子类别。
我也尝试了以下查询
"SELECT * FROM category WHERE (parent_id IS NULL OR parent_id = :parentId)
但它当然会失败,因为它总是返回顶级类别,即使目的是只获取某些子类别。
我的问题是,如何设置查询以使其按预期工作,即当 parentId == null 时返回所有顶级类别,否则返回给定类别 id 的所有子类别。
【问题讨论】:
标签: sql sqlite select android-room isnull