如何在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

如何在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 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