私の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に「変換」する方法は?
残念ながらMySQLはCTE(Common Table Expressions)をサポートしていません。これは長い間遅れていたIMOです。多くの場合、代わりにサブクエリを使用できますが、この特定のCTEはrecursiveです。クエリ内でそれ自体を参照します。再帰CTEは階層データに非常に役立ちますが、MySqlは階層データをまったくサポートしていません。同じ結果を得るには、ストアドプロシージャを実装する必要があります。
私の以前の答えは良い出発点を提供するはずです:
残念ながら、MYSQlまたはXAMPP(MARIADB)mysqlはCTE(COMMON TABLE EXPRESSIONS)をサポートしていません。同じため、ネストされたクエリを使用する必要があります。
詳細については、以下のリンクをクリックしてください。