如何在MySql中使用递归查询?
如何在MySql中运行此查询 它将显示如下错误消息:如何在MySql中使用递归查询?,mysql,Mysql,如何在MySql中运行此查询 它将显示如下错误消息: WITH RECURSIVE transitive_closure(a, b, distance, path_string) AS ( SELECT a, b, 1 AS distance, a || '.' || b || '.' AS path_string, b AS direct_connection FROM edges2 WHERE a = 1 -- set the sta
WITH RECURSIVE transitive_closure(a, b, distance, path_string) AS
( SELECT a, b, 1 AS distance,
a || '.' || b || '.' AS path_string,
b AS direct_connection
FROM edges2
WHERE a = 1 -- set the starting node
UNION ALL
SELECT tc.a, e.b, tc.distance + 1,
tc.path_string || e.b || '.' AS path_string,
tc.direct_connection
FROM edges2 AS e
JOIN transitive_closure AS tc ON e.a = tc.b
WHERE tc.path_string NOT LIKE '%' || e.b || '.%'
AND tc.distance < 3
)
SELECT * FROM transitive_closure
--WHERE b=3 -- set the target node
ORDER BY a,b,distance
WITH RECURSIVE语句/方法适用于PostgreSQL和Sybase,我想可能还有更多,所以您可以看看这个:
它应该向您展示一些使用MySQL和PHP中的一两种方法,我知道它不在您的标记列表中MySQL不支持递归查询。您将需要使用不同的数据模型,或者升级到支持递归CTESFunction的数据库,并且可以递归调用这些函数和过程。如果您需要递归,请将您的逻辑包装到存储过程中。为了完成这一过程,除了PostgreSQL和Sybase之外,Firebird、Oracle、DB2、Teradata、MS SQL Server和H2数据库中也提供了递归CTE #1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'RECURSIVE transitive_closure(a, b, distance, path_string) AS ( SELECT a, b, 1 A' at line 1