mysql 可以使用 start with 递归函数吗
时间: 2024-05-23 18:13:16 浏览: 18
MySQL中的WITH RECURSIVE语句可以实现递归查询,但是不支持start with语法。在MySQL中,递归查询需要使用WITH RECURSIVE语句来实现,该语句类似于其他数据库中的递归查询语法。WITH RECURSIVE语句会不断地迭代执行查询,直到满足查询的终止条件为止。可以使用递归查询来处理具有层次结构的数据,例如组织结构或产品分类等。
相关问题
mysql 函数里可以使用with recursive吗
是的,MySQL 支持在函数中使用 WITH RECURSIVE 语句。但需要注意的是,函数中使用 WITH RECURSIVE 语句时,需要将整个查询语句放在一个 SELECT 语句中,并且使用 SELECT INTO 语句将查询结果赋值给变量。另外,为了避免递归查询导致死循环,需要设置好递归查询的终止条件。
以下是一个示例:
```
CREATE FUNCTION my_func() RETURNS VARCHAR(255)
BEGIN
DECLARE result VARCHAR(255);
SELECT col1 INTO result FROM (
WITH RECURSIVE cte (id, col1) AS (
SELECT id, col1 FROM my_table WHERE id = 1
UNION ALL
SELECT t.id, t.col1 FROM my_table t
JOIN cte c ON t.parent_id = c.id
)
SELECT col1 FROM cte WHERE id = 2
) AS subquery;
RETURN result;
END;
```
在上面的示例中,函数 my_func() 中使用了 WITH RECURSIVE 语句进行递归查询,并将查询结果赋值给变量 result,最后返回该变量的值。
mysql5.7.31使用递归函数WITH RECURSIVE报1064
MySQL 5.7.31 的确支持 WITH RECURSIVE 递归查询,但是需要满足以下条件:
1. MySQL 的 SQL 模式必须是 ANSI 模式或者类似于 ANSI 模式的模式,例如 TRADITIONAL 模式。
2. MySQL 的版本必须大于等于 8.0.1 或者是 5.7.8。
如果你的 MySQL 版本符合以上条件但是还是报 1064 错误,那么可能是你的语法有问题,你可以检查一下语法是否正确。如果还是无法解决问题,可以提供更多的错误信息和查询语句,我可以帮你进一步分析。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)