sql >> データベース >  >> RDS >> Sqlserver

親のすべての子(子孫)を取得するためのCTE

    これでうまくいくはずです:

    WITH MyTest as
    (
      SELECT P.ProductID, P.ParentID, CAST(P.ProductID AS VarChar(Max)) as Level
      FROM Products P
      WHERE P.ParentID = 0
    
      UNION ALL
    
      SELECT P1.ProductID, P1.ParentID, CAST(P1.ProductID AS VarChar(Max)) + ', ' + M.Level
      FROM Products P1  
      INNER JOIN MyTest M
      ON M.ProductID = P1.ParentID
     )
    SELECT * From MyTest
    

    これが更新されたSQLフィドルです。

    また、CTEのヘルプについては、このリンクを確認してください...彼らは間違いなく知っておくとよいでしょう:

    これでうまくいくことを願っています!



    1. postgresのUPDATERETURNING句から選択できません

    2. MySQLの1つを除くすべての重複行を削除しますか?

    3. SQL Union –UNION演算子に関する包括的なガイド

    4. RETURNINGを壊さずにPostgresトリガーベースの挿入リダイレクト