Android SQLite数据库递归查询

时间:2014-02-28 05:21:01

标签: android sqlite android-sqlite recursive-query

select @pv:=categoryID as 'categoryID', name, parentID from categories
join
(select @pv:=4) tmp
where parentID = @pv

上面的查询工作MYSQL但它不能在我的Android移动SQLite数据库上工作。 还有其他解决方案吗?enter image description here

1 个答案:

答案 0 :(得分:4)

SQLite使用SQL标准中定义的common table expressions进行递归查询,而不是某些特定于供应商的语法:

WITH RECURSIVE subtree
AS (SELECT categoryID, name, parentID
    FROM categories
    WHERE categoryID = 4
    UNION ALL
    SELECT c.categoryID, c.name, c.parentID
    FROM categories AS c
    JOIN subtree ON c.parentID = subtree.categoryID)
SELECT *
FROM subtree

但是,CTE仅在SQLite 3.8.3或更高版本中可用,仅在Android 5.0或更高版本中可用。 在早期的Android版本中,您不能使用递归查询,必须单独获取每个级别的数据。