select @pv:=categoryID as 'categoryID', name, parentID from categories
join
(select @pv:=4) tmp
where parentID = @pv
上面的查询工作MYSQL但它不能在我的Android移动SQLite数据库上工作。 还有其他解决方案吗?
答案 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版本中,您不能使用递归查询,必须单独获取每个级别的数据。