WITH RECURSIVE sub_nodes AS ( SELECT reason, parent_reason_id FROM reason_dict WHERE reason_id = 1 UNION ALL SELECT tt.reason, tt.parent_reason_id FROM tree_table tt INNER JOIN sub_nodes sn ON tt.parent_reason_id = sn.reason_id SELECT reason_id FROM sub_nodes;使用上述方法报错
时间: 2024-04-10 20:35:09 浏览: 15
根据您提供的查询代码,我注意到有一个错误。在第二个SELECT语句中,您使用了错误的表名 `tree_table`,而实际上应该使用 `reason_dict` 表来进行递归查询。请尝试以下修正后的查询代码:
```sql
WITH RECURSIVE sub_nodes AS (
SELECT reason, parent_reason_id
FROM reason_dict
WHERE reason_id = 1
UNION ALL
SELECT tt.reason, tt.parent_reason_id
FROM reason_dict tt
INNER JOIN sub_nodes sn ON tt.reason_id = sn.parent_reason_id
)
SELECT reason_id
FROM sub_nodes;
```
请注意,我假设您的 `reason_dict` 表包含名为 `reason_id`、`reason` 和 `parent_reason_id` 的列,其中 `reason_id` 是节点ID,`reason` 是节点名称,`parent_reason_id` 是父节点ID。请根据您的实际表结构进行相应的调整。
如果您仍然遇到问题,请提供更多关于表结构和错误信息的详细信息,以便我更好地帮助您解决问题。
相关问题
WITH RECURSIVE category_tree AS ( SELECT id, name, parent_id, 0 AS level FROM categories WHERE parent_id IS NULL UNION ALL SELECT c.id, c.name, c.parent_id, ct.level + 1 FROM categories c JOIN category_tree ct ON c.parent_id = ct.id)SELECT * FROM category_tree; RECURSIVE报错语法错误
根据您提供的代码片段,出现语法错误的可能原因是在使用WITH RECURSIVE时,前面的查询子句中没有使用逗号分隔不同的SELECT语句,导致解析出错。您可以尝试将两个SELECT语句用逗号分隔开来,如下所示:
```
WITH RECURSIVE category_tree AS (
SELECT id, name, parent_id, 0 AS level
FROM categories
WHERE parent_id IS NULL
UNION ALL
SELECT c.id, c.name, c.parent_id, ct.level + 1
FROM categories c
JOIN category_tree ct ON c.parent_id = ct.id
)
SELECT * FROM category_tree;
```
这应该可以解决语法错误问题。如果还有其他问题,请提供具体的错误信息,以便我更准确地帮助您解决问题。
with recursive t as (select * from ops_division t1 where t1.division_code ='999' union all select t2.* from ops_division t2 join t on t2.division_code = t.parent_division_code) select * from t
根据您提供的 SQL 查询语句,使用 WITH RECURSIVE 进行递归查询,可能会出现一些问题导致报错。以下是一些可能导致报错的原因以及相应的解决方案:
1. MySQL 版本问题:WITH RECURSIVE 在 MySQL 8.0 及以上版本才可用。如果您使用的是较旧的版本,可能会报错。请确保您的 MySQL 版本符合要求。
2. 表名或字段名错误:请确保您在查询中引用的表名和字段名是正确的,并且与数据库中的实际情况匹配。检查表名和字段名的大小写是否正确。
3. 递归查询条件错误:在递归查询中,需要指定递归的终止条件。请确保您在递归查询中正确设置了结束条件,以避免无限递归导致报错。
4. 数据库权限问题:如果您没有足够的权限执行递归查询,可能会报错。请确保您具有执行递归查询所需的权限。
请检查以上可能导致报错的原因,并根据具体情况进行排查和调整。如果您能提供具体的报错信息,我可以更准确地帮助您解决问题。