28

MySQLスキーマには、category(id, parentid, name)テーブルがあります

MSSQLには、そのCTEクエリがあります(指定されたカテゴリIDのカテゴリツリーを下から上に構築するため)。

with CTE (id, pid, name) 
as
(
    select id, parentid as pid,name
    from category
    where id = 197
      union all
        select CTE.pid as id , category.parentid as pid, category.name
        from CTE 
          inner join category 
            on category.id = CTE.pid
 )
 select * from CTE 

そのクエリをMySQLに「変換」する方法は?

4

4 に答える 4

34

残念ながら、MySQL は CTE (Common Table Expressions) をサポートしていません。これは、IMO が待ち望んでいたものです。多くの場合、代わりにサブクエリを使用できますが、この特定の CTE は再帰的です。つまり、クエリ内で自分自身を参照します。再帰的 CTE は階層データに非常に役立ちますが、繰り返しになりますが、MySql はそれらをまったくサポートしていません。同じ結果を得るには、ストアド プロシージャを実装する必要があります。

私の以前の答えは、良い出発点を提供するはずです:

MySQL の階層データから深さベースのツリーを生成する (CTE なし)

于 2012-01-12T10:40:39.783 に答える
0

残念ながら、MYSQl または XAMPP(MARIADB) mysql は CTE (COMMON TABLE EXPRESSIONS) をサポートしていません。そのため、ネストされたクエリを使用する必要があります。

詳細については、以下のリンクをクリックしてください:-

https://mariadb.com/kb/en/library/with/

于 2018-07-11T03:31:02.437 に答える